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

コードの完全なコンテキストはわかりませんが、このコードは、すでに実装されているファイルサイズチェックと組み合わせて、正しい方向に進むはずです。ここでの簡単な答えは「USEPUSH」ですが、コーディングしたいと思ったので、それが不必要な読み取りを引き起こし、「usepush」で十分だったとしたら申し訳ありません。

#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 に答える
0
my @missing_files = grep { ! -e } @files_to_search_for;
于 2012-06-28T14:05:39.017 に答える