【问题标题】:Difference between == , = and eq== , = 和 eq 之间的区别
【发布时间】:2013-08-26 02:30:58
【问题描述】:

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

 my $a = 1;

 my $a == 1;

 my $a eq 1;

【问题讨论】:

标签: perl operators assignment-operator equality-operator


【解决方案1】:

== 用于比较数值。

eq 用于比较字符串值。

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

【讨论】:

    【解决方案2】:

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


    For More Click Here

    【讨论】:

      【解决方案3】:

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

      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.
      

      【讨论】:

        【解决方案4】:

        你不应该在任何 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 作为变量,因为这些被认为是排序时使用的特殊变量。你通常可以侥幸逃脱,但最好不要惹他们。

        【讨论】:

          猜你喜欢
          • 2011-10-25
          • 2011-10-03
          • 2010-10-30
          • 2011-01-06
          • 1970-01-01
          • 1970-01-01
          • 2021-12-25
          • 2020-05-10
          • 2014-09-20
          相关资源
          最近更新 更多