_latest("dire1"); ...do something... _latest("dire2"); ...do something... _latest("dire3"); ...do something... _latest("dire4"); ...do something... sub _latest{ my $file = shift; my @dir; my $saved_time = -1; my $saved_name = ''; sub wanted { if(-f $File::Find::name) { if ((stat($File::Find::name))[9] > $saved_time) { $saved_time = (stat($File::Find::name))[9]; $saved_name = $File::Find::name; } } } @dir = ($file); find(\&wanted, @dir); return $saved_name; }