#!/usr/bin/perl -W use warnings 'all'; use strict; # Scans the input file(s), breaking each line into fields. # Builds a key from prettified $type, and stores an array of # output lines in a hash under the key. Prints a list of all # the types seen in the file(s), and asks the user to choose one. # Prints the output lines stored for that key/type. my $limit = 30; my $usage = "Usage: $0 infile\n"; die $usage unless @ARGV; sub pretty { return ucfirst lc shift } my %lines; while (<>) { my ($whatever, $type, $num) = split; my $key = pretty($type); push @{ $lines{$key} }, "$type\t$num\n" if $num < $limit; } my @types = sort keys %lines; my $ask = "Please select a category:\n"; $ask .= "\t$_. $types[$_]\n" foreach 0 .. $#types; my $type; while (not $type) { print $ask; chomp(my $choice = ); $type = $types[$choice] or print "$choice was not an option!\n" and next; } my $key = pretty($type); print @{ $lines{$key} };