my %filesets; for ( @fnames ) { push @{ $filesets{ -s $_ } }, $_; } # filter out any lists that have only one element: for ( keys %filesets ) { @{$filesets{$_}} <= 1 and delete $filesets{$_}; }