Perl中不需要的文件名分割.BUG



我想知道目录树中的文件。像这样

TOP -> SECOND -> FOLDERS 1-3 -> NAME -> Files

我没有生成这些文件,但是它们的格式是这样的

1234 ACS. (Description).txt

是的,这里是空白

我的问题是当我从"NAME"文件夹中读取。txt文件

opendir(DIR, $top.$second) or die "CANNOT OPEN SECOND DIRECTORYn";
@nameFolders = grep { !/^.|..$/ }  readdir(DIR);
closedir(DIR);
foreach(@nameFolders){
        $folder = $_;
        if($_ =~ /.txt$/){ next; } #sometimes .txt files are here but I took care of them earlier in the code and that works just fine
        #print $_."n"; #Output is 100% perfect here
        opendir FIL, $top.$second."/".$folder or die "CANNOT OPEN NAME DIRECTORYn";
        @files = grep  { /.txt$/ } readdir(FIL);
        closedir(FIL);
        foreach(@files){
            $fileName = $_;
            print $fileName."n"; #HERE IS MY PROBLEM OUTPUT IS BELOW
            @fileName = split / /, $fileName;
            $numID = $fileName[0];
            $goodFiles{$fileName}=$numID;
        }
}
OUTPUT: 
     1234 ACS. (STUFF).txt
     ACS.
     1235 ACS. (STUFF).txt
     ACS.
     ...

这是怎么回事?我没有吐出文件名,直到我打印之后,它在@files数组中。

我很茫然。

感谢您的任何输入。

这有帮助吗?

use strict;
use warnings;
use File::Find;
my @directories_to_search = ();
push(@directories_to_search, 'TOP/SECOND/');
find(&wanted, @directories_to_search);
sub wanted 
{
    my $file = $_;
    if (defined($file) && $file =~ m/.txt$/) 
    {
      print "$filen";
    }
}

1234 ACS. (STUFF).txt
1235 ACS. (STUFF).txt

最新更新