0

他の perl スクリプトを自動化するスクリプトを作成しようとしています。基本的に、データをロールアップするスクリプトがいくつかあり、毎週実行する必要があります。また、週末に実行して問題を確認し、問題があればメールで連絡する必要があるものもいくつかあります。私は電子メールと自動化以外のすべてを解決しました。インターネット検索で判断すると、Proc::Background を使用する方法が適しているようです。テストするために非常に基本的なスクリプトを作成しようとしましたが、よくわかりません。私は Perl を初めて使用し、(Windows タスク スケジューラ以外で) 自動化したことがないので、コードが何を言っているのか本当に理解できません。

私のコード:

use Proc::Background;

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


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

no executable program located at C:...コード (Proc::Background) が何をしているのかを正確に説明してもらえますか?というエラーが表示されます。そうすれば、少なくとも自分のタスクを達成し、将来的にデバッグする方法についてより良いアイデアが得られます. ありがとう。

4

1 に答える 1

2

Proc::Background のドキュメントで次のことに気付きました。

Win32::Process モジュールは、Win32 プラットフォームでバックグラウンド プロセスを生成するために常に使用されます。このモジュールは、実行可能ファイルの名前と任意のオプション引数を含む単一の文字列引数を常に受け​​取ります。さらに、実行可能ファイルへの絶対パスも渡す必要があります。単一の引数のみが new に渡される場合、それは空白で配列に分割され、分割された配列の最初の要素が実行可能ファイルの名前で使用されます。複数の引数が new に渡される場合、最初の要素が実行可能ファイルの名前として使用されます。

そのため、実行可能ファイルが必要なように見えますが、Perl スクリプトでは必要ありませんが、「perl.exe」は必要です。

通常、Windows タスクでも「perl.exe」を指定します。

C:\dwimperl\perl\bin\perl.exe "C:\Dropbox\Programming\Perl\mccabe.pl"
于 2012-08-07T21:16:19.933 に答える