0

我想知道这些之间的区别:

 my $a = 1;

 my $a == 1;

 my $a eq 1;
4

4 回答 4

13

==在比较数值时使用。

eq用于比较字符串值。

=是赋值运算符,而不是比较运算符。

于 2013-08-23T06:21:56.613 回答
1

eq用于测试字符串相等性,==是相同的,但用于数字相等性。


更多请点击这里

于 2013-08-23T06:24:11.993 回答
1

最后两个语句什么都不做,使用指令是一个好习惯:

use warnings;
use strict;

例如:

#!/usr/bin/perl
use warnings;
use strict;

my $a == 1;
my $b eq 1;

print "$a $b\n";

您应该会看到一些警告,例如:

Useless use of numeric eq (==) in void context at main.pl line 5.
Useless use of string eq in void context at main.pl line 6.
Use of uninitialized value $a in numeric eq (==) at main.pl line 5.
Use of uninitialized value $b in string eq at main.pl line 6.
Use of uninitialized value $a in concatenation (.) or string at main.pl line 8.
Use of uninitialized value $b in concatenation (.) or string at main.pl line 8.
于 2013-08-23T06:37:10.270 回答
0

你不应该在任何 perl 程序中看到第二个或第三个例子。如果你这样做了,那么假设原始程序员的意思是别的东西(比如 )就不会牵强my $a = 1;。如果您使用的是 strict 和 warnings pragma,它们都会发出警告消息:

use strict;
use warnings;
my $a == 1;

# ==> Useless use of numeric eq (==) in void context at -e line 3.
# ==> Use of uninitialized value $a in numeric eq (==) at -e line 3.

您还应该尽量避免在任何 perl 程序中使用$a$b作为变量,因为这些被认为是排序时使用的特殊变量。你经常可以侥幸逃脱,但最好不要惹他们。

于 2013-08-23T06:37:34.173 回答