in reply to recursive parsing techniques
And the output is -use strict; use warnings; use Data::Dumper; my $card = load_vcard(); print Dumper($card); sub load_vcard { my $n = 0; my @var = (); foreach (<DATA>) { chomp; $n++, next if /^BEGIN:VCARD/; $n-- ? last : next if /^END:VCARD/; next if /^AGENT/; push @var, /FN:(\w+)/; } my %card; eval '$card' . '{AGENT}' x $_ . '{FN} = "' . $var[$_] . '"' for (0..$#var); return \%card; } __DATA__ BEGIN:VCARD FN:Fee AGENT: BEGIN:VCARD FN:Fie AGENT: BEGIN:VCARD FN:Foe AGENT: BEGIN:VCARD FN:Fum END:VCARD END:VCARD END:VCARD END:VCARD
$VAR1 = { 'AGENT' => { 'AGENT' => { 'AGENT' => { 'FN' => 'Fum' }, 'FN' => 'Foe' }, 'FN' => 'Fie' }, 'FN' => 'Fee' };
|
|---|