open (RD, "ls -l /dir1/dir2/dir3/'$b' |"); ... foreach $fileline (@user_dir) { @filenames = split(/\s+/,$fileline, 9); #### 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; ... }