0

我正在寻找目录中的文件。如果我找不到该文件,我想将该文件的名称发送到一个数组,这样当循环完成时,我将拥有一个未找到文件的数组。我如何在 Perl 中编写代码?

foreach $missing (@miss) {
    chomp $missing;
    ($a,$b)=split(/\.m_inproc./,$missing);

    @find = `find /home1/users/virtual/ -name .m_inproc.$b`;
    $find_size = scalar @find;
    $flag = "/home1/t01jkxj/check_st/flags/$b";

    if ($find_size < 1 && -e $flag) {
        $doit = `$b > @re_missing`;
    }
}

这是我的搜索代码,如果它没有找到一个文件($find_size小于 1)并且有一个标志文件(意味着我们之前已经完成了这个搜索)。我想将该变量$b(文件名)写入数组。显然,我目前的语法不正确。那会是什么?谢谢!($doit = $b > @re_missing;)

4

3 回答 3

1

怎么样:

push @re_missing, $b

顺便说一句,使用 $a 和 $b 是不好的形式。这些是用于比较器主体的隐式声明的变量sort

于 2012-06-28T13:45:42.673 回答
0
my @missing_files = grep { ! -e } @files_to_search_for;
于 2012-06-28T14:05:39.017 回答
0

不确定您的代码的完整上下文,但此代码 - 结合您已经实现的文件大小检查 - 应该让您走上正确的轨道。这里的简短回答是“使用推送”,但我想编写代码,很抱歉,如果这导致不必要的阅读和“使用推送”就足够了。

#usr/bin/perl
use strict;
use warnings;

my @files = ("tester.txt", "pooter.txt", "output.txt"); 
my @notfound;


foreach(@files)
{
    if (!(-e $_))
    {
        push (@notfound, $_);
    }
}

foreach(@notfound)
{
    print $_;
}
于 2012-06-28T13:48:18.590 回答