2012-06-28 64 views
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;)是不正确的。它会是什么?谢谢!

+0

“@ missing”是什么? “@ missing”元素是文件的完整路径吗?你期望这些文件已被移动?或者,完整的路径不正确? –

回答

1

如何:

push @re_missing, $b 

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

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 $_; 
} 
0
my @missing_files = grep { ! -e } @files_to_search_for; 
+1

除了我认为'find'也在子目录下搜索。这是一个简单的基于'File :: Find'的解决方案。 –

相关问题