Regex 无限输入循环,直到用户在Perl中退出
如何在Perl中执行无限输入循环直到他退出,因为即使输入quit或q,我也无法正确退出代码。非常感谢你的帮助Regex 无限输入循环,直到用户在Perl中退出,regex,perl,loops,Regex,Perl,Loops,如何在Perl中执行无限输入循环直到他退出,因为即使输入quit或q,我也无法正确退出代码。非常感谢你的帮助 do { &ipdiscover; print "enter q or quit to exit"; my $input=<>; chomp($input); if($input=="quit") exit; }until(($input eq "quit")||($input eq "q")); do { &ipdiscover; 打印“输入
do
{
&ipdiscover;
print "enter q or quit to exit";
my $input=<>;
chomp($input);
if($input=="quit")
exit;
}until(($input eq "quit")||($input eq "q"));
do
{
&ipdiscover;
打印“输入q或退出”;
我的$input=;
chomp($输入);
如果($input==“退出”)
出口
}直到($input eq“quit”)|($input eq“q”);
&ipdiscover
–永远不要调用这样的函数,除非您知道所有的副作用。如果有疑问,请执行ipdiscover()
不要将字符串与将参数强制为数字的=
运算符进行比较。如果它看起来不像一个数字,你会得到零。因此,$input==“quit”
很可能适用于大多数$input
s
但是,if
语句是以块的形式定义的,而不是以语句的形式定义的(如在C中)。因此,你必须这样做
if ($input eq "quit") {
exit;
}
或简写:如果$input eq“退出”,则退出代码>。但你为什么要这么做<代码>退出
终止整个程序
另一方面,直到($input eq“quit”)|($input eq“q”)
是一个正确的终止条件,并且在修复$input
的范围后将按预期工作
我认为您应该执行以下操作,因为这样可以更好地处理输入结束(例如,在Linux上:Ctrl-D、Windows;Ctrl-Z):
使用严格;使用警告;#把这个放在每个程序的顶部!
while(已定义(my$answer=prompt(“键入q或退出:”)){
最后一个if$answer eq“q”
或$answer eq“退出”
}
子提示{
我的($挑战)=@;
本地$|=1;#设置自动刷新;
打印$challenge;
chomp(my$answer=//返回未定义);
返回$answer;
}
你可以说这是
最后一次
迭代,从而留下一个循环。&ipdiscover
–除非你知道所有的副作用,否则不要调用这样的函数。如果有疑问,请执行ipdiscover()
不要将字符串与将参数强制为数字的=
运算符进行比较。如果它看起来不像一个数字,你会得到零。因此,$input==“quit”
很可能适用于大多数$input
s
但是,if
语句是以块的形式定义的,而不是以语句的形式定义的(如在C中)。因此,你必须这样做
if ($input eq "quit") {
exit;
}
或简写:如果$input eq“退出”,则退出代码>。但你为什么要这么做<代码>退出
终止整个程序
另一方面,直到($input eq“quit”)|($input eq“q”)
是一个正确的终止条件,并且在修复$input
的范围后将按预期工作
我认为您应该执行以下操作,因为这样可以更好地处理输入结束(例如,在Linux上:Ctrl-D、Windows;Ctrl-Z):
使用严格;使用警告;#把这个放在每个程序的顶部!
while(已定义(my$answer=prompt(“键入q或退出:”)){
最后一个if$answer eq“q”
或$answer eq“退出”
}
子提示{
我的($挑战)=@;
本地$|=1;#设置自动刷新;
打印$challenge;
chomp(my$answer=//返回未定义);
返回$answer;
}
你可以说这是
最后一次
迭代,从而留下一个循环。为什么在一个条件中使用=
,而在另一个条件中使用eq
来表示字符串?是否{print“输入I.p地址以查找发现名称”。“\n”&ipdiscover;打印“输入q以退出,其他任何单词以继续”。\n;my$input=;chomp($input);#if($input==“quit”)退出0 if($input eq“)|($input eq“quit”)|直到($input eq“quit”)|($input eq“q”);为什么在一个条件中为字符串使用=
,而在另一个条件中使用eq
?是否{print“输入查找发现名称的I.P地址”?\n“&ipdiscover“输入q退出,任何其他单词继续”。“\n;my$input=;chomp($input);#if($input==“quit”)退出0 if($input eq“q”)|($input eq“quit”);}直到($input eq“quit”)|($input eq“q”));