Similar to davorg's (which is fine), but differing -- for demonstration purposes only -- in a few details, which are arguably obscure or inefficient. YMMV.
#!/usr/bin/perl -w
use strict;
# Slurp in the data, and place the records in an array.
my @recs;
{local $/; @recs = <DATA> =~ /(\*[^*]+)/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