使用File :: Find

时间:2016-11-11 15:50:53

标签: perl

嗨,请考虑这个Perl代码:

for my $line  (@files){
    #print "$line\n";
    if ($line =~ /gene\/(\w.+)\s\w+\/(\w.+)(\.\S.+\.\S.+\.gz)/){
        #print "$line\n";
        @array = split ('\t', $1);
        my $path = $array[0];
        foreach my $pathi (sort(keys(%legend))){
            foreach my $name ( keys %{$legend{$pathi}}){
                foreach my $sample ( keys %{$legend{$pathi}{$name}}){
                    if ($pathi =~ $path){
                        my $dirsearch = "/Users/bob/Desktop/gene_ex/";
                        find(\&wantede, $dirsearch);
                        sub wantede {
                                if ($_ eq $name){
                                    my $finalname = "$sample\_$name";
                                    rename ($File::Find::name, "$File::Find::dir/$finalname") or print "Rename error";
                                }
                            }
                        } 
                    }
                }
            }
        }
    }

我想要做的是搜索一个特定的文件,并在名称上附加另一个分支:find函数就像这样,但是当我试图在里面找到$ name时,我得到一个错误,即没有声明$ name或者其他的东西。我控制了所有的哈希,他们很好,我无法弄清楚出了什么问题。如果我首先进行连接,我每次都会在文件上找到相同的名称

在@files中,工作目录中有所有文件 在%legend中是一个哈希,其中第一个键是文件夹的名称,第二个键是文件名,第三个键是字符串。

0 个答案:

没有答案