Perl에서 find를 호출하는 중 오류가 발생했습니다.

Perl에서 find를 호출하는 중 오류가 발생했습니다.
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에서 명령을 실행할 수 있지만 -newermtPerl 스크립트에 넣으면 다음 오류가 발생합니다. 도와주실 수 있나요? 감사해요

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 로 수행합니다 ).perlfind2perlfind-newermtstat()mtimePOSIX::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: $?";

관련 정보