【发布时间】:2021-08-13 18:16:09
【问题描述】:
我正在研究一种中断 Perl 脚本执行的方法,该方法可以保存交互的时间点,并且可以从该交互开始下次运行。 基本上我看到其他人在说“将 Perl 的执行保存在它所处的状态”。 我正在查看脚本并试图了解如何提取交互编号并打印到文件中,然后重新插入脚本中作为下一次开始运行的初始索引。
use strict;
use warnings;
sub powerset(&@) {
my $callback = shift;
my $bitmask = '';
my $bytes = @_/8;
{
my @indices = grep vec($bitmask, $_, 1), 0..$#_;
$callback->( @_[@indices] );
++vec($bitmask, $_, 8) and last for 0 .. $bytes;
redo if @indices != @_;
}
}
powerset { print "[@_]\n" } 1..5;
my $i = 0;
对于示例:假设我想要一组 1..50 的幂集,然后在我中断执行时,输出上打印的最后一行是 [1 2 3 4 6 7 8 11 12 13 15 16 17]。然后在脚本执行的第二次启动时,我只想将各自的索引迭代到打印的行[1 2 3 4 6 7 8 11 12 13 15 16 17],我不想重做已经在第一次运行时打印结果的迭代Perl 文件。
我的目标是能够开始第一次运行file.pl,然后在out.txt 文件perl file.pl > out.txt 中打印输出,然后将out.txt 文件移动到另一个目录(即删除。 txt 从当前目录)。然后我必须能够继续从各个索引到已经打印的行[1 2 3 4 6 7 8 11 12 13 15 16 17] 的交互。
注意:我知道:“要暂停程序,您可以在程序运行时键入 ^ z (= ctrl-z) 1。然后键入 BG 以在后台发送(已停止)进程。要再次恢复,请键入 FG(或 fg,以防您有严重的背景 - 键入 Jobs 以列出它们)。“但这并不是我所期望的。
【问题讨论】:
-
@Dada 谢谢!它似乎与我正在寻找的内容相关并且可以帮助寻找解决方案,但仍然需要能够打印出您停止的索引并手动在代码中重新插入该索引,因为如果我只需关闭执行并在几个小时后返回执行它。
标签: perl compiler-optimization recompile