首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >perl循环中eq操作符的意外行为。循环不停止

perl循环中eq操作符的意外行为。循环不停止
EN

Stack Overflow用户
提问于 2017-11-21 14:01:15
回答 3查看 273关注 0票数 2

下面的循环没有在标量之后停止,$quit显然不等于'j‘。为什么停不下来?

代码语言:javascript
运行
复制
#!/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";

} 
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-11-21 14:04:04

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

代码语言:javascript
运行
复制
chomp (my $quit = <STDIN>);

实际上,您希望为现有变量赋值:

代码语言:javascript
运行
复制
chomp($quit = <STDIN>);

注意,Perl linting程序(如Perl::批评家 )会提醒您注意这个问题:

在词法范围内重用变量名:$quit位于第9行第12列。创建唯一的变量名。(严重程度: 3)

票数 6
EN

Stack Overflow用户

发布于 2017-11-21 14:03:36

您可以在循环中重新定义$quitchomp (my $quit = <STDIN>);删除该行中的my

代码语言:javascript
运行
复制
#!/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";

} 
票数 4
EN

Stack Overflow用户

发布于 2017-11-21 14:07:07

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

代码语言:javascript
运行
复制
chomp ($quit = <STDIN>);

所以,没有我的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47414952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档