my $data="fruit=pear meat=chicken legs fruit=orange slices cheese=mont +erey jack meal=lunch meat=ribs bread= "; my %foo; while ($data =~ m/(\S+)=(\S*($|([^=]+\s+)*))/g) { my ($tmpkey,$tmpval); my $count=1; $tmpkey=$1; $tmpval=$2; while (defined $foo{$tmpkey}){ $count++; $tmpkey=~s/\_\d+$//; $tmpkey.="_$count"; } $foo{$tmpkey}=$tmpval; } for (sort (keys %foo)){ if ($_!~/_\d+/){ my $rm=$_; $_.="_1"; $foo{$_}=$foo{$rm}; delete $foo{$rm}; } chomp ($_,$foo{$_}); print "$_->$foo{$_}\n"; }
In reply to Re: Parsing Challenge
by symŽ
in thread Parsing Challenge
by symŽ
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |