Hi ExReg,
I'd recommend you take a look at perldsc for a cookbook of different data structures.
You should also always Use strict and warnings, especially when working with complex data structures -
and your code contains a typo that prevents it from working properly and that use strict; would have caught!
Also, please post code that compiles, you're missing several closing quotes.
The syntax "$%{$excerpts[$i]}{fpart}" is probably not doing what you want - it's populating a hash "%%"!
Here's one way to do what you want. Note that $excerpts[i]{fpart} = ... would not work, since at that point $excerpts[i] is a string, not a hash ref, that's why I replace that element of @excerpts with a new hashref.
use warnings;
use strict;
use Data::Dumper;
my $fc = 'abcdfoofrobnicatebardefforspambazghi';
my $re2 = qr/(fo.)(.*?)(ba.)/;
my @excerpts;
push @excerpts, $1 while $fc =~ /($re2)/g;
for my $i ( 0 .. $#excerpts ) {
$excerpts[$i] =~ /$re2/;
$excerpts[$i] = { fpart=>$1, bpart=>$3 };
}
print Dumper(\@excerpts);
__END__
$VAR1 = [
{
'bpart' => 'bar',
'fpart' => 'foo'
},
{
'fpart' => 'for',
'bpart' => 'baz'
}
];
Hope this helps, -- Hauke D |