Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.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
perl while循环中eq运算符的意外行为。而循环不会停止_Perl - Fatal编程技术网

perl while循环中eq运算符的意外行为。而循环不会停止

perl while循环中eq运算符的意外行为。而循环不会停止,perl,Perl,而下面的循环在标量$quit明显不等于“j”后不会停止。 为什么它不会停止 #!/usr/bin/perl -w use strict; my $quit = 'j'; while ($quit eq 'j') { print "Enter whatever value you want and I bet I still continue.\n"; chomp (my $quit = <STDIN>); print "quit equals: $qui

而下面的循环在标量
$quit
明显不等于“j”后不会停止。 为什么它不会停止

#!/usr/bin/perl -w

use strict;
my $quit = 'j';

while ($quit eq 'j') {

    print "Enter whatever value you want and I bet I still continue.\n";
    chomp (my $quit = <STDIN>);
    print "quit equals: $quit\n";

} 
#/usr/bin/perl-w
严格使用;
我的$quit='j';
而($quit eq'j'){
打印“输入您想要的任何值,我打赌我仍将继续。\n”;
chomp(我的$quit=);
打印“退出等于:$quit\n”;
} 

在循环中重新定义
$quit
chomp(my$quit=)删除此行中的
my

#!/usr/bin/perl -w
use strict;
my $quit = 'j';

while ($quit eq 'j') {

    print "Enter whatever value you want and I bet I still continue.\n";
    chomp ($quit = <STDIN>);
    print "quit equals: $quit\n";

} 
#/usr/bin/perl-w
严格使用;
我的$quit='j';
而($quit eq'j'){
打印“输入您想要的任何值,我打赌我仍将继续。\n”;
chomp($quit=);
打印“退出等于:$quit\n”;
} 

在循环中,您正在使用
my
关键字创建一个新的
$quit
变量:

chomp (my $quit = <STDIN>);
chomp(my$quit=);
实际上,您希望分配给现有变量:

chomp($quit = <STDIN>);
chomp($quit=);
请注意,Perl linting程序(如)可能会提醒您此问题:

在词法作用域中重用变量名:$quit在第9行第12列。发明唯一的变量名。(严重程度:3)


因为您在while循环中定义了一个新变量$quit。 这就是你想要的:

chomp ($quit = <STDIN>);
chomp($quit=);
所以,没有“我的”