Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re: slurped scalar map

by Zaxo (Archbishop)
on Jun 20, 2006 at 14:46 UTC ( [id://556409]=note: print w/replies, xml ) Need Help??


in reply to slurped scalar map

If you can rely on the fixed offset of the data in a line, unpack, or substr/regex matching will get you the data. It will be easier if you split the file into an array of lines, or else originally slurp it that way,

my @lines = <$handle>; my %record; for (@lines) { next unless /^\| (\w+) \| (\d+)/; $record{$1} = $2; }
That doesn't just assign one value to one variable which is named after another piece of the data; it associates all those other pieces with their data.

You wind up with a more useful and easier-to-manage representation of the data in your file.

If you're stuck with that scalar variable, you can use the same regex globally,

my %record = $data =~ /^\| (\w+) \| (\d+)/g;
That looks simpler, but it is, IMO, more fragile.

To get exactly what you asked for, knowing the offset and length of the field,

my $rec1ref = \substr $data, $offset, $len; $$rec1ref = $newval;
If length($newval) != $len, the offsets to subsequent data will be disturbed and the data seen in $$rec1ref will be truncated or augmented.

After Compline,
Zaxo

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others contemplating the Monastery: (5)
As of 2024-03-28 08:16 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found