私はperlスクリプトを任意の時点で実行しており、特定の条件が満たされていれば別のperlスクリプトを起動します。 メインスクリプトを変更して再実行するたびに、サブスクリプトが実行されていないことを確認してから、それを強制終了して再実行する必要があります。修正時間が変更された場合に実行中にperlスクリプトを再ロード
私は、変更時間に基づいて自動的にperlスクリプトをリロードできるかどうかを調べています。 私は以下のリンク(以下で共有するコードスニペット)に出くわしました。しかし、これが正しい方法であれば不思議です。すべてのポインタ?
ここにコードスニペット: (test.plは、必要に応じて変更することができます実行しているとWorker.pmを続けている)
Worker.pm:
package Worker;
our $iteration = 1;
sub do_some_work {
return if $iteration > 100;
printf "$iteration Original\n";
$iteration++;
sleep 1;
return 1;
}
sub save_state {
return $iteration;
}
sub load_state {
my $class = shift;
$iteration = shift;
}
1;
test.pl
#!/usr/bin/env perl
use lib '.';
use Worker;
my $library_file = $INC{'Worker.pm'};
my $library_mtime = (stat($library_file))[9];
while (Worker->do_some_work()) {
my $new_mtime = (stat($library_file))[9];
next if $new_mtime == $library_mtime;
$library_mtime = $new_mtime;
eval {
my $state = Worker->save_state();
delete $INC{'Worker.pm'};
require 'Worker.pm';
Worker->load_state($state);
};
}
ソース:https://www.depesz.com/2015/01/21/reloading-of-perl-script-while-its-running/
を参照してください[再](HTTPS:/ /metacpan.org/pod/again)。 –
リンクを直接参照して謝罪し、ここにコンテンツを貼り付けてください。 – iDev
あなたが探しているものは[this post](http://stackoverflow.com/a/37096022/4653379)ですか? (私は問題の説明を完全に理解していません。) – zdim