如何将变量的值添加到数组中?

时间:2012-06-28 13:36:33

标签: arrays perl file text

我正在寻找目录中的文件。如果我找不到该文件,我想将该文件的名称发送到一个数组,这样当循环完成时,我将有一个未找到的文件数组。我如何在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;)的语法不正确。会是什么?谢谢!

3 个答案:

答案 0 :(得分:1)

怎么样:

push @re_missing, $b

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

答案 1 :(得分:0)

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

#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 $_;
}

答案 2 :(得分:0)

my @missing_files = grep { ! -e } @files_to_search_for;