use Data::Dumper; use Cache::MemoryCache (); my $cache = new Cache::MemoryCache; find({wanted => \&ab_wanted, no_chdir => 1}, $opt{d}); print Dumper \%files; sub ab_wanted { if (-r _ && -f _){ my $size = int ((-s _) / 2**20); if ($size > $opt{s} && $opt{a} < -A _){ my $uid = (lstat(_))[4]; my $name = $cache->get($uid); unless (defined $name) { $name = getpwuid($uid); $cache->set($uid, $name); } push @{$files{$name}}, [ $_, $size, int -A _ ]; } } }