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
Perl File::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: $?";