Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re: Re: Re: Re: Re: Non-fixed data in record

by brassmon_k (Sexton)
on Aug 31, 2001 at 21:53 UTC ( #109459=note: print w/ replies, xml ) Need Help??


in reply to Re: Re: Re: Re: Non-fixed data in record
in thread Non-fixed data in record

I guess what I really need to know more than the hash or arrays because thats used primarily for storing values is how to tell the script that if it finds the line I want to print it. I haven't been able to do that because it's always on different lines, and I can't use "$_" for a pattern match because the only way I can get it to print is to print "$_" and I haven't figured out how to say if you match this line print it. I can't say if you match this text on this line print it because the text is on different lines sometimes.

To make this work I was thinking of using OR's, such as:

If ($lines[2] =~ "radioChannelProperty") { print "$lines[2]"; OR if ($lines[3] =~ "radioChannelProperty") { print "$lines[3]"; OR etc...
That's what I really, REALLY need to figure out. I can read on how to construct the arrays and hashes and stuff but as to do the above I have no clue. I haven't tried what I put up there because I think that PERL would laugh at me that was just to give you an example of what I was looking at for desired effect.
The Brassmonk


Comment on Re: Re: Re: Re: Re: Non-fixed data in record
Download Code
Re: Re: Re: Re: Re: Re: Non-fixed data in record
by dragonchild (Archbishop) on Aug 31, 2001 at 22:05 UTC
    while (<IN_FILE>) { if (/radioChannelProperty/) { print "$_\n"; } }
    I'm assuimng that that's what you want to do.

    ------
    We are the carpenters and bricklayers of the Information Age.

    Vote paco for President!

      Yes, that is it but I want to have only the "radioChannelProperty" line print. That will print what you showed above. It matches and prints the whole block. Now I can't tell it to print off $line2 if it's "radioChannelProperty" even though that's what I want because in the next record block "radioChannelProperty" could be on line3 so I have to devise a way of telling it to print the "radioChannelProperty" line when it isn't always on the same line for every record block. So in the best way I can explain it, and this isn't proper syntax.

      while block subheading equals "msterminating"
      if match "radioChannelProperty" on line5 print line5 or if
      match "radioChannelProperty" on line10 print line10

      elsif subheading equals "msoriginating"
      if match "radioChannelProperty" on line2 print line2 or if
      match "radioChannelProperty" on line8 print line8

      The Brassmonk
        Don't change $/. Don't do anything of the sort. You have a textfile containing a piece of information per line. Use \n the way it was supposed to be used!
        open IN_FILE, "<my_in_file" or die "Cannot open my_in_file\n"; LINE: whle (<IN_FILE) { # This is a big block if (/^\S/) { } elsif (/^\s{2}\S/) { # Do what you want to do for middle hash } elsif (/^\s{4}\S/) { # Do what you want to do for inner hash } else { die "Bad line in datafile\n"; } } close IN_FILE;
        You are reading the file in one line at a time, not one block at a time. Don't make things complicated.

        K-I-S-S

        ------
        We are the carpenters and bricklayers of the Information Age.

        Vote paco for President!

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://109459]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (7)
As of 2014-12-28 11:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (180 votes), past polls