【问题标题】:Perl Ending loops/code blocks based on user input (!die/exit)Perl 根据用户输入结束循环/代码块 (!die/exit)
【发布时间】:2012-07-24 05:22:26
【问题描述】:

我在玩一些我编写的代码时提出了一个一般性问题。我想知道除了 die() 之外,是否有任何方法可以根据用户反馈终止程序的特定部分(如果我在这里误用了术语,我深表歉意);因为这会结束整个程序。

代码如下:

if ($choice eq 'y'){
print "\nHit diagnostics: \n";
{
my $hitList=@hitList;
for (my $i=0; $i<$hitList; $i++){
    print $hitList[$i]."\n";
    #segmented listout of misses with interrupt 
    if(($i%4) eq 0){
        print "CONTINUE or Q to end\n";
        my $next=<>;
        chomp($next);
        if(lc($next) eq 'q'){
            **die "Killing request...\n";**
            }
        }
    }
}

所以基本上我只是希望用户能够结束模数 if 循环,如果他们在某个时候决定他们实际上不想看到整个列表但仍然能够继续(有一个错过提示之后也是)与程序。

最好的方法是使用变量作为“开关”来确定命中列表是否应该继续?只是想知道是否有更可接受/更优雅的解决方案。

【问题讨论】:

    标签: perl exit terminate die


    【解决方案1】:
    for my $i (0..$hitList-1) {
       ...
       if (...) {
           last;
       }
       ...
    }
    

    last

    【讨论】:

    • last 也适用于“C 风格”循环。我只是在复制循环时使循环更具可读性。)
    • 如果这回答了您的问题,请通过选中答案左侧的标记来关闭问题。欢迎来到 StackOverflow :)
    • 我会说“如果此答案解决了您的问题,请单击左侧的复选标记轮廓将其标记为已接受。”这确实表明不需要额外的答案,但如果人们认为他们有更好的解决方案,它不会阻止他们添加它们。结束一个问题确实会阻止其他答案。
    • @cjm,从我的回答中可以看出,我喜欢说why,而不仅仅是how
    猜你喜欢
    • 2015-04-29
    • 2015-06-07
    • 2015-05-30
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多