0

I want to know the difference between these:

 my $a = 1;

and

 my $a == 1;

and

 my $a eq 1;
4

4 に答える 4

13

==は、数値を比較するときに使用されます。

eqは、文字列値の比較に使用されます。

=は比較演算子ではなく代入演算子です。

于 2013-08-23T06:21:56.613 に答える
1

最後の 2 つのステートメントは何もしません。ディレクティブを使用することをお勧めします。

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 に答える
1

eqは文字列の等価性をテストするため==のもので、数値の等価性を除いて同じことです。


詳細はここをクリック

于 2013-08-23T06:24:11.993 に答える
0

どの perl プログラムでも、2 番目または 3 番目の例は決して見るべきではありません。もしそうなら、元のプログラマーが何か別のことを意味していると仮定するのは大げさではありません ( などmy $a = 1;)。strict および warnings プラグマを使用していた場合、これらは両方とも警告メッセージを表示します。

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.

$aまた、perl プログラムでor$bを変数として使用しないようにしてください。これらは、ソート時に使用される特別な変数と見なされるからです。多くの場合、それを回避できますが、それらをいじらないことをお勧めします.

于 2013-08-23T06:37:34.173 に答える