#!/usr/bin/perl -w use strict; # Slurp in the data, and place the records in an array. my @recs; {local $/; @recs = =~ /(\*[^*]+)/g } # Collect info on each movie. my %movies; for (@recs) { s/Movie="([^"]+)" +show=(\d+)//; my ($movie, $show) = ($1, $2); my $tot = eval eval {join '+', grep $_ >= 20, /\d+/g}; @{$movies{$movie}}{qw(show tot)} = ($show, $tot); } # Print out the result. print "Movie Show Collection >= 20\n"; for (keys %movies) { printf "%-8s %4d %5d\n", $_, @{$movies{$_}}{qw(show tot)}; } __END__ * Movie="ABC" show=4 10 20 30 14 90 30 21 13 11 10 09 23 22 05 22 15 19 20 * Movie="XYZ" show=4 10 20 30 14 90 30 21 13 11 10 09 23 22 05 22 15 19 10