Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 无限输入循环,直到用户在Perl中退出_Regex_Perl_Loops - Fatal编程技术网

Regex 无限输入循环,直到用户在Perl中退出

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; 打印“输入

如何在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;
打印“输入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”));