in reply to Numeric summarisation from data in a hash?

Convert $vlength to seconds (easy), and use grep in its scalar context:
sub btween (\%$$) { my ($hash, $from, $until) = @_; return scalar(grep { $hash->{$_}->{VLENGTH} >= $from && $hash->{$_}->{VLENGTH} < $until } keys(%{$hash})); } print "There are ", btween(%hash, 0, 60), " clips between 0-1 minutes\ +n";
(And so on and so forth)

Update: Oops, forgot the titles. Grep again:

sub btween (\%$$) { my ($hash, $from, $until) = @_; my @found = grep { $hash->{$_}->{VLENGTH} >= $from && $hash->{$_}->{VLENGTH} < $until } keys(%{$hash})); my $titles = join(', ', map { $hash->{$_}->{TITLE} } @found); return ($#found, $titles); } my @result = btween(%hash, 0, 60); print "There are $result[0] clips between 0-1 minutes, and their names + are: $result[1]\n";
Update the second: Rewrote the update in the form of the original sub statement. This doesn't work for 'there are n clips >5 minutes long'-type things. Change the conditional in the grep statement to fix this.

Andrew.