나는 내가 만든 Perl 모듈을 가지고 있으며 스케줄에 따라 서브 루틴 중 하나를 실행하려고합니다. 나는 서브 루틴을 호출하고 crontab에서 호출하는 작은 펄 스크립트를 만들 수 있지만 crontab에서 서브 루틴을 오른쪽으로 호출하는 방법이 있으면 멋지다는 것을 알고 있습니다!perl 모듈의 서브 루틴을 실행하는 cron에서
이것이 가능합니까?
나는 내가 만든 Perl 모듈을 가지고 있으며 스케줄에 따라 서브 루틴 중 하나를 실행하려고합니다. 나는 서브 루틴을 호출하고 crontab에서 호출하는 작은 펄 스크립트를 만들 수 있지만 crontab에서 서브 루틴을 오른쪽으로 호출하는 방법이 있으면 멋지다는 것을 알고 있습니다!perl 모듈의 서브 루틴을 실행하는 cron에서
이것이 가능합니까?
명령 줄에서 코드를 실행하기 위해 Perl의 -e
스위치를 사용할 수 있습니다 (예 :
perl -Myour_module -e 'your_function()'
perlrun man page이 당신의 친구입니다 : 모듈을로드하기위한 -M
스위치도 짧은
perl -e 'use your_module; your_function()'
합니다.
당신은 그래서 당신은 crontab에서 동일한 작업을 수행 할 수있을 것입니다
perl -MYour::Module=some,functions,to,import,such,as,foo -e 'foo();'
같은 것을 사용하여 명령 줄에서 서브 루틴을 실행할 수 있습니다. cron은 대개 제한된 환경 변수 집합으로 실행되므로 -I/path/to/your/modules
옵션을 추가해야 할 수도 있습니다.
보다 세련된 솔루션을 원한다면 모듈을 스크립트로 실행 중이고 해당 상황에서 다르게 동작하도록 감지 할 수 있습니다. 이 토론 참조 : In Perl, how can I find out if my file is being used as a module or run as a script?