my $dir = '/path/to/files'; my @files = sub{ local *DH; opendir( DH, $_[0] ) or die 'Cannot open ' . $_[0]; return grep { -f $_ } readdir(DH); }->( $dir );