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

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!

Replies are listed 'Best First'.
Re: Keep It Simple, S*****
by brassmon_k (Sexton) on Aug 31, 2001 at 23:26 UTC
    I believe this is more simple than all of your examples but everybody has their idea of simple.
    #!/usr/bin/perl -w chomp($msisdn = <STDIN>); $/ = ""; # read paragraphs @lines = split(/\n/, $_); if (@lines == 1) # A Heading { $lastHeading = $lines[0] next; } if ($lines[1] =~ "mSTerminating") { print("$lines[4]\n") if($lines[4] =~ "recordSequenceNumber"); } }
    I know "lastHeading" isn't defined yet along with "msisdn" but this worked! It delimits what is printed by the subheading. I can also add in more delmiters because for the phone number line even though that one moves around I'll just tell it to match the phone number delimited by the subheading off of $_ so I don't have to worry.

    So if the script finds subheading "mSTerminating" and if it finds a match for "recordSequenceNumber" then it prints line 4. See I found out in my datablocks that "recordSequenceNumber" is in lines4, 5, or 8 so I just say
    print line4 if "recordSequenceNumber" is matched on line4
    print line8 if "recordSequenceNumber" is matched on line8

    Of course this is in it's very prelim form I just wanted to show ya that I found an easy way.

    The Brassmon_k