==,=和eq之间的差异

时间:2013-08-23 06:18:36

标签: perl operators assignment-operator equality-operator

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

 my $a = 1;

 my $a == 1;

 my $a eq 1;

4 个答案:

答案 0 :(得分:11)

比较数值时使用

==

eq 用于比较字符串值。

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

答案 1 :(得分:1)

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


For More Click Here

答案 2 :(得分: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.

答案 3 :(得分:0)

你永远不应该在任何perl程序中看到第二或第三个例子。如果你这样做,那么假设原始程序员意味着别的东西(比如my $a = 1;)那就没有牵强附会了。如果您使用严格和警告编译指示,那么这些都会发出警告消息:

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作为变量,因为它们被视为排序时使用的特殊变量。你经常可以逃脱它,但最好不要乱用它们。

相关问题