虽然标量$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";
}
答案 0 :(得分:6)
在循环内,您要使用$quit
关键字创建新的my
变量:
chomp (my $quit = <STDIN>);
您实际上想要分配给现有变量:
chomp($quit = <STDIN>);
请注意,Perl::Critic之类的Perl linting程序会提醒您注意此问题:
在词法范围内重用变量名:$ quit at第9行,第12列。创建唯一变量名。 (严重程度:3)
答案 1 :(得分:4)
您在循环中重新定义$quit
:chomp (my $quit = <STDIN>);
删除此行中的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";
}
答案 2 :(得分:1)
因为你在while循环中定义了一个新变量$ quit。 这就是你想要的:
chomp ($quit = <STDIN>);
所以,没有'我的'。