Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer

Re: Need Record Parsing Advice

by unobe (Scribe)
on Mar 03, 2006 at 08:30 UTC ( #534167=note: print w/replies, xml ) Need Help??

in reply to Need Record Parsing Advice

I'd use Tie::File and set the record separator. Then use some multiline regexes. I tested your data out on the following code, and it worked like a charm.
use strict; use warnings; use Tie::File; my ($record, @array, %data) = (0); my $file = 'whatever'; tie @array, 'Tie::File', $file, recsep => '=' x 30 . "\n"; while ($array[$record]) { $record++, next unless $array[$record] =~ m/^[^=]/; @{$data{$record}}{'primary', 'level', 'group', 'id_node', 'inverse', 'secondaries'} = $array[$record] =~ m/# get primary id, level, and group Primary[^:]+ \D+(\d+) \D+(\d+) \D+(\d+) # then the id-node and inverse (?:[^:]+:){4} \D+(\w+) \D+(\d+) # skip 'Secondary ID' line [^K]+ # and grab the rest until end of record ([^=]+) /gxms; $record++; } for my $rec (keys %data) { for (keys %{$data{$rec}} ) { print $_ . ' is set to ' . $data{$rec}{$_} . "\n"; } }

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://534167]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (5)
As of 2018-06-24 19:41 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (126 votes). Check out past polls.