my $dir = "/dir1/dir2/dir3/$b"; opendir my $dh, or die "Couldn't read directory '$dir'"; my @user_dir = map { "$dir/$_" } grep { $_ !~ /^\.\.?$/ } readdir $dh; ... foreach my $fileline (@user_dir) { my $filename = $fileline; ... }