|
#! /usr/local/bin/perl -ws
undef $::RD_WARN;
my $parse = Parse::RecDescent->new( <<'EOGRAMMAR');
{use Tie::Hash; }
line: <rulevar: local %max; tie %max, Tie::StdHash'; %max = (count=>0) >
line: seplist[sep=>',']
| seplist[sep=>':']
| seplist[sep=>" "]
| { $max{item} }
seplist: <skip:"">
<leftop: /[^$arg{sep}]*/ "$arg{sep}" /[^$arg{sep}]*/>
{ $max{count} = @{$max{item} = $item[2]}
if @{$item[2]} > $max{count};
}
<reject>
EOGRAMMAR
while (<DATA>)
{
chomp ;
my $res = $parse ->line( $_ );
print '[' , join ( '][' , @$res ), "]\n" ;
}
|