1

ディレクトリの下にあるファイルを監視する必要があります。以下のスクリプトを perl でコーディングしました。しかし、それは私が望むことをしていません。

  1. 1 つまたは複数のファイルが到着するたびに、移動を行う必要があります。
  2. そして、再びファイルを監視し続ける必要があります。
  3. スクリプトはバックグラウンドで実行されている必要があります。

    #!/usr/bin/perl
    use warnings;
    use File::Copy qw(move);
    $src_dir = '/root/prasanna/dir';
    $tgt_dir = '/root/prasanna/dir/dir1';
    while (true) {
        opendir( DIR, "/root/prasanna/dir" )
            or die "Cannot open  /root/prasanna/dir: $!\n";
        my @Dircontent = readdir DIR;
        close DIR;
        my $items = @Dircontent;
        if ( $items > 2 ) {
            print "files available";
            while ($items) {
                print $items;
                move $src_dir. '/' . $items, $tgt_dir . '/' . $items;
                unlink $items;
            }
        }
        else { sleep 50; }
    }
    

上記のコードの問題は、1. if ステートメントが 'files available' を出力し続けることです。無限ループに入り、ファイルを再び監視しません。ファイルに対して操作を行っても、ファイルを再度検索する方法がわかりません。2. スクリプトはバックグラウンドで実行されません。

どんな助けでも大歓迎です。よろしくお願いします。

4

1 に答える 1