0

다른 펄 스크립트를 자동화하는 스크립트를 작성하려고합니다. 본질적으로, 나는 나를 위해 데이터를 롤업하고 매주 실행해야하는 몇 가지 스크립트가있다. 나는 또한 주말에 물건을 확인하고 문제가 있으면 이메일을 보내야하는 부부가 있습니다. 나는 전자 우편을 작동 시켰고 모든 것을 자동화했다. 인터넷 검색으로 판단 할 때, Proc :: Background를 사용하는 것이 방법입니다. 나는 그것을 테스트하기위한 아주 기본적인 스크립트를 작성하려고 시도했지만 그것을 이해할 수는 없다. 필자는 Perl에 익숙하지 않고 (Windows 작업 스케줄러를 통하지 않고) 자동화 된 것이 없으므로 코드가 말하는 것을 실제로 이해하지 못합니다.정확하게 Proc :: Background에서 무엇이 진행되고 있습니까?

내 코드 :

use Proc::Background; 

$command = "C:/strawberry/runDir/SendMail.pl"; 


my $proc1 = Proc::Background -> new($command); 

내가 no executable program located at C:... 누군가가 정확하게 코드 (PROC :: 배경이) 무엇을하는지 나에게 설명 할 수 없다는 오류가 나타납니다? 나는 적어도 내 작업을 수행하고 미래에 디버그하는 방법에 대한 더 나은 아이디어를 갖게 될 것이다. 감사.

+0

당신이'\'대신'/'더 나은 행운을 가지고 있습니까? 쉘은 OS 자체만큼 유연하지 않습니다. (리터럴에서'\ '를 두 번 잊지 마라 : "c : \\ st ..."'. – ikegami

+0

처음에는'perl '을 던져서 작동하도록했다. –

답변

2

나는 다음 사항 PROC에 :: 배경의 문서를했다 :는 Win32 : 프로세스 모듈이 항상 백그라운드를 생성하는 데 사용됩니다

는 Win32 플랫폼에 을 처리합니다. 이 모듈은 항상 실행 파일의 이름과 옵션 인수를 포함하는 단일 문자열 인수를 취합니다. 또한 실행 파일의 절대 경로가 이어야합니다. 단일 인수 만 new에 전달 된 경우 공백으로 배열로 분할되고 분할 배열의 첫 번째 요소가 실행 파일의 이름으로 사용됩니다. 복수 인수 이 new에 전달되면 첫 번째 요소가 실행 파일의 이름으로 사용됩니다.

그래서 Perl 스크립트는 실행되지 않지만 "perl.exe"는 실행 파일이 필요합니다.

나는 일반적으로뿐만 아니라 내 Windows 작업에서 "하여 Perl.exe"을 지정

C:\dwimperl\perl\bin\perl.exe "C:\Dropbox\Programming\Perl\mccabe.pl" 
+0

고마워요. "perl"을 앞에 붙여서 작업 할 명령을 받았습니다. '$ command = "perl C : /strawberry/runDir/cmd.pl"' –