http://www.perlmonks.org?node_id=950634


in reply to Generating a list of numbers from other lists

Somewhat late, but putting it all together, this is one solution:

use Modern::Perl; use List::Util qw/ max sum /; use autodie; open my $fh1, '<', 'LookingForTheseNumbersList'; chomp ( my @wanted = <$fh1> ); close $fh1; open my $fh2, '<', 'NumbersList'; my %found; while ( <$fh2> ) { if ( /(\d+)\s+(\d+)/ and $1 ~~ @wanted ) { push @{ $found{$1} }, $2; } } close $fh2; for my $k ( sort { $a <=> $b } keys %found ) { my @nums = @{ $found{$k} }; say "All($k): " . join ' ', @nums; # Do some calculations, eg: say "Max($k): " . max @nums; say "Sum($k): " . sum @nums; say "Avg($k): " . ( sum @nums ) / @nums; say ''; # Print newline }

Update; removed '.tmp' suffix from input file names