作成したPerlモジュールがあり、その中のサブルーチンの1つをスケジュールに従って実行したいと思います。サブルーチンを呼び出してcrontabから呼び出す小さなperlスクリプトを作成できることはわかっていますが、crontabから直接サブルーチンを呼び出す方法があれば、それはすばらしいことです。
これは可能ですか?
-e
コマンドラインからコードを実行するためにPerlのスイッチを使用できます。
perl -e 'use your_module; your_function()'
-M
モジュールをロードするためのスイッチを使用して、これをさらに短くします。
perl -Myour_module -e 'your_function()'
perlrunのmanページはあなたの友達です。
次のようなものを使用して、コマンドラインからサブルーチンを実行できます。
perl -MYour::Module=some,functions,to,import,such,as,foo -e 'foo();'
したがって、crontabから同じことを行うことができます。-I/path/to/your/modules
cronは通常、制限された環境変数のセットで実行されるため、オプションを追加する必要がある場合があることに注意してください。
より洗練されたソリューションが必要な場合は、モジュールがスクリプトとして実行されていることを検出し、その状況で異なる動作をするようにモジュールを構成できます。この説明を参照してください:Perlで、ファイルがモジュールとして使用されているのか、スクリプトとして実行されているのかを確認するにはどうすればよいですか?