use warnings;
use File::Find;
my $srceDir = "//mnt/Share_Drive/Verizon PM&T/Capture Files/";
opendir(DIR, $srceDir) or die "Can't open $srceDir: $!";
my @files = (find -type f -newermt "12 Feb 2013", $srceDir);
closedir(DIR);
find
このオプションを使用してLinuxでコマンドを実行できますが、-newermt
Perlスクリプトに入れると次のエラーが発生します。助けてもらえますか?ありがとう
String found where operator expected at ./queryAlm.pl line 11, near "newermt "12 Feb 2013""
(Do you need to predeclare newermt?)
syntax error at ./queryAlm.pl line 11, near "newermt "12 Feb 2013""
答え1
PerlFile::Find
モジュールはこのコマンドとほとんど関係ありませんfind
。perldoc File::Find
使用方法を確認してください。
jordanmが指摘したように、これはコードを書くのに役立ちますが、find2perl
標準構文だけを認識するため、通常はBSD / GNU拡張は認識されません。たとえば、Perlコードを直接書く必要があります。 (対応するファイルを呼び出してCompareで実行します)。perl
find2perl
find
-newermt
stat()
mtime
POSIX::mktime(0,0,0,12,2,113)
find
モジュールが不要なコマンドを実行するには、File::Find
次のようにします。
my $srceDir = "//mnt/Share_Drive/Verizon PM&T/Capture Files/";
my @find_cmd = ("find", $srceDir, "-type", "f", "-newermt", "12 Feb 2013", "-print0");
open FIND, "-|", @find_cmd;
$/ = "\0";
my @files = <FIND>; chomp @files;
my $ret = close FIND or warn $! ?
"Error closing find pipe: $!" :
"find exited with non-zero exit status: $?";