in reply to Getting started -- hashes!

Well, the basic design philosophy I might consider would be to push each file of a given size into an anonymous array referenced by a hash element whos key is the size. That way all files of the same size can be automatically grouped together by size. Then counting the files would be as simple as accessing a given hash element as a whole array, in scalar context so that the value obtained is the array element count. You mentioned using a reverse hash where the key is the size, so you're on the right track in that respect. Here's an example:

my %entries; while ( my $entry = <DATA> ) { chomp $entry; my ( $size, $name ) = split /\s+/, $entry; push @{$entries{$size}}, $name; } local $" = "\t"; print scalar( @{$entries{$_}} ), ": @{$entries{$_}}\n" for sort { $a <=> $b } keys %entries; __DATA__ 12 filename1 14 filename2 14 filename3 11 filename4 14 filename5

Obviously this isn't a cut-n-paste solution, but it's the start of an example of a Perlish solution.

Sometimes it's all about finding the right data structure.

You may need to learn a little Perl to get it all implemented though.


Dave