Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Re: Troubles with simple parsing

by bgreenlee (Friar)
on Dec 19, 2004 at 03:12 UTC ( [id://415939]=note: print w/replies, xml ) Need Help??


in reply to Troubles with simple parsing

Your code is also not very efficient in that you're looping through the contents of the file four times. You also don't need to read the whole file into a list before processing it. Finally, you can take a shortcut and instead of checking individually for each valid key (e.g. "produce", "price", etc.), you can just take whatever is before the equals sign as a key and whatever is after as the value.

open(FILE,"<$file") or die $!; # always check for the error condition! while (my $line = <FILE>) { if ($line =~ m/\[(.*)\]/) { push @art, { item => $1 }; } elsif ($line =~ m/^(\w+)\s*=\s*(.*?)\s*$/) { # the \s*'s ignore lead +ing and trailing whitespace. $art[-1]->{$1} = $2; # [-1] references the last item in the array; + i.e. what you just pushed on there } } close FILE;

-b

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others studying the Monastery: (7)
As of 2024-04-19 10:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found