我不确定我犯的是什么错误,但我只是将ne改为!=并且它有效.
这是一个简单的程序,让用户猜出一个数字,直到他们达到目标数字.
#!/usr/bin/perl my $guess = 1; do { $guess = <STDIN>; } while ( $guess != 12 ) ; # it doesn't work if i replace != with ne say "you guessed ",$guess;
解决方法
Perl的ne是字符串不等于运算符,因此$guess和12被视为字符串.
通过<>获得的字符串最后包含换行符,因此它不等于字符串’12’.
!=是数字不等于运算符,因此两个操作数都被视为数字.在这种情况下,Perl在进行转换时将忽略任何尾随的非数字字符,因此将忽略换行符并且字符串12< newline>被视为数字12.
如果你在比较之前选择获得的值,那么ne运算符也可以工作.