I've been programming Perl for. . . 2 years now, I think.  And that entire time I've been wondering what in the hell I'd use grep for.  Today I discovered it :)  I have no idea what prompted me to think of it, but it made life sooooooo much easier.  
Rather than try to explain what I was doing, I'll let the code speak for itself:
my @days = qw(Monday Tuesday Wednesday Thursday Friday Saturday Sunday);
my @hours = qw(7a8a 8a9a 9a10a 10a11a 11a12p 12p1p 1p2p 2p3p 3p4p 4p5p 5p6p 6p7p 7p8p 8p9p 9p10p);
my @rows;
foreach my $day (@days)
{
    my @times = $request->param($day);
    # Increment the total number of hours
    $count += scalar @times;
    # Iterate over the list of hours
    my %row;
    my $hour_num = 1;
    $row{DAY} = $day;
    foreach my $hour (@hours)
    {
        my $fill_char;
        # Was this hour selected?
        my $found = grep(/$hour/, @times);
        if($found) { $fill_char = "x"; }
        else       { $fill_char = " "; }
        # Fill the hash of times for this day
        $row{"HOUR$hour_num"} = $fill_char;
        ++$hour_num;
    }
    # Write a line out to the table
    push @rows, \%row;
}
The end result of this got pushed out to an HTML::Template.  Check out the first table here to get an idea of what we're producing.
I love grep!
Way to go !