如何通过用户按键来中断或恢复Perl循环?

如何通过用户按键来中断或恢复Perl循环?,perl,Perl,这是为了调试目的。我有一个for循环,它生成一些输出到Cygwin bash的CLI 我知道我可以将输出重定向到文本文件,并使用Perl,甚至只是一个普通的文本编辑器来检查为特定迭代打印的值,只是觉得有点痛苦 我现在想的是,在for循环中放置一个特殊的子例程,这样它在每次迭代开始时都会被“中断”,Perl脚本应该只在用户/程序员点击一个键(键盘上的Enter键?)后才恢复运行 通过这种方式,我可以直接检查每次迭代期间打印出来的值 有没有一种简单的方法可以做到这一点,而不需要使用额外的库/CPAN

这是为了调试目的。我有一个for循环,它生成一些输出到Cygwin bash的CLI

我知道我可以将输出重定向到文本文件,并使用Perl,甚至只是一个普通的文本编辑器来检查为特定迭代打印的值,只是觉得有点痛苦

我现在想的是,在for循环中放置一个特殊的子例程,这样它在每次迭代开始时都会被“中断”,Perl脚本应该只在用户/程序员点击一个键(键盘上的Enter键?)后才恢复运行

通过这种方式,我可以直接检查每次迭代期间打印出来的值


有没有一种简单的方法可以做到这一点,而不需要使用额外的库/CPAN?

如果您只想在每次迭代中暂停以供用户输入,那么只需在循环中读取STDIN即可:

my $debug = 1;
while ($looping) {
    if ( $debug ) {
        print "Press enter to continue\n";
        $input = <>;
    }
}
my$debug=1;
while($循环){
如果($debug){
打印“按enter键继续\n”;
$input=;
}
}

如果设置了调试标志,则程序将暂停,直到用户按enter键,然后循环将继续。您可以在暂停之前打印变量。设置
$debug=0
以禁用暂停。

除非您使用参数调用脚本。@sid\u com:这一点很好-我已经忘记了。如果您还没有提取
@ARGV
的内容,那么是的,您是完全正确的。我自己通常不会看到这种行为,因为在我编写的任何代码中,解析命令行args通常是第一件事。如果
@ARGV
列表为空,则菱形运算符指向STDIN。没错。我注意到了。我刚刚明确地将STDIN放在diamond操作符中,您的逻辑肯定有效:)