別のスクリプトから perl スクリプトを呼び出す必要があります。制約は、.pm ファイルで定義されたいくつかのグローバル変数が 2 つのスクリプト間で共通であるということですが、ローカル変数は共有されません。これを行う方法を教えてください
2 に答える
2 番目のスクリプトのコードを最初のスクリプトの関数として呼び出せない理由はありますか? 単一のプログラムとして機能し、グローバル変数を共有する必要があります。
Perl スクリプトに別のファイルの関数を含めるにはどうすればよいですか? を確認してください。あるスクリプトを別のスクリプトに含めるさまざまな方法について。
これをどのように機能させたいかによって異なります。
プロセス間でグローバル変数を共有したい場合は、「治療」が必要です。shmget
shared-memory ( ) やその他の IPC (Inter-Process Communication) メカニズムのようなものが必要になります。 を参照してくださいperldoc perlipc
。面白いのは、2 つのプロセスを同期して、同じものを同時に更新しようとしないようにすることです。避けられるなら絶対に行きたくないですよね。
単純なのは、これらのグローバル値を 2 番目のプロセスに渡して、独自のコピーを取得できるようにする場合です。値が単純なテキストの場合は、コマンドライン パラメータ ( から読み取る@ARGV
) または環境変数 ( %ENV
) として渡すことができます。ただし、参照やファイル ハンドルなど、よりエキゾチックな場合は、別のプロトコルを理解する必要があります。fork
Windows を使用していないと仮定すると、 (必要ない場合もあります)を使用して子プロセスを作成するexec
方が簡単な方法かもしれません。
さらに良いことに、これらのグローバルをコピーまたは共有する必要があるかどうかを検討してください。