Perl字符串比较方法及输入quit无法终止循环问题求助
Perl循环无法识别"quit"输入的问题解决
问题出在你用<STDIN>读取用户输入时,会把用户按下的回车键(换行符\n)也一并存入变量里。比如你输入quit后,$choice实际存储的是"quit\n",和"quit"用ne比较永远不相等,所以循环会无限运行。
解决方法很简单,在读取输入后用chomp()函数去掉字符串末尾的换行符即可:
修正后的第一个版本代码
do { print "Enter a sentence or phrase to convert or 'quit': "; $choice = <STDIN>; # 读取用户输入 chomp($choice); # 移除输入末尾的换行符 } while ($choice ne "quit");
修正后的第二个版本代码
$quit = "quit"; do { print "Enter a sentence or phrase to convert to or 'quit': "; $choice = <STDIN>; # 读取用户输入 chomp($choice); # 关键步骤:去掉换行符 $dif = $quit ne $choice; } while ($dif); # 直接用$dif作为判断条件即可,无需==1
补充说明:Perl的字符串比较运算符ne是严格匹配,只有两个字符串完全一致时才会返回假。chomp()是处理用户输入的常用操作,它会自动移除字符串末尾的行结束符(不同系统的换行符可能不同,比如Windows是\r\n,Unix是\n,chomp()都能正确处理)。
内容的提问来源于stack exchange,提问作者Manny
相关产品推荐
相关产品推荐

