G'day MurciaNew,
Here's a technique that will read your data in blocks,
by localising a temporary value for the input record separator
($/).
#!/usr/bin/env perl
use strict;
use warnings;
my %data;
{
local $/ = ":\n";
my $block_re = qr{\A(.*)^(.*?):?\Z}ms;
my $key;
while (<DATA>) {
my ($data, $label) = /$block_re/;
$data{$key} = $data if defined $key;
$data{$key} .= $label if eof DATA;
$key = $label;
}
}
use Data::Dump;
dd \%data;
__DATA__
AAA:
123
456
789
BBB:
qwe
rty
uio
CCC:
asd
fgh
jkl
Notes:
-
There's nothing particularly special about the regex ($block_re);
see perlre if you need to.
-
The first block read only has a label.
That's dealt with by the 'if defined $key' condition.
-
The last block read only has data.
That's dealt with by the 'if eof DATA' condition.
-
You'll need to replace DATA with $fh (or similar).
See open for more on that.
-
I've used Data::Dump just to show the results of the data extraction:
that's not part of the technique.
-
The code assumes your example data is representative.
If it's not, the general technique should still be sound,
but you may need to make some modifications.
Here's the output from that code:
{
AAA => "123\n456\n789\n",
BBB => "qwe\nrty\nuio\n",
CCC => "asd\nfgh\njkl\n",
}
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.