2013-08-23 7 views
0

Je veux connaître la différence entre ces:Différence entre ==, = et éq

my $a = 1; 

et

my $a == 1; 

et

my $a eq 1; 
+3

http://www.perlmonks.org/?node_id=276023, 2e appel avec [Recherche Google] (https://encrypted.google.com/search?name=f&hl=fr&q=perl+difference++%3D% 3D ++% 3D ++ eq) – mrt

+1

'perldoc perlop' –

+0

Ceci est une question parfaitement fine et utile, et une entrée fréquente dans PERL. – smci

Répondre

10

== est utilisé lorsque comparer des valeurs numériques.

eq est utilisée pour comparer des valeurs de chaîne.

= est l'opérateur d'affectation, pas un opérateur de comparaison.

1

eq est pour tester l'égalité des chaînes, == est la même chose mais pour l'égalité numérique.


For More Click Here

1

Les deux dernières déclarations ne font rien, c'est une bonne pratique d'utiliser les directives:

use warnings; 
use strict; 

par exemple:

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

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

print "$a $b\n"; 

vous devriez voir un avertissement tel comme:

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. 
0

Vous ne devriez jamais voir les 2ème ou 3ème exemples dans un programme Perl. Si vous le faites, il ne serait pas farfelu de supposer que le programmeur original signifiait quelque chose d'autre (comme my $a = 1;). Ceux permettrait à la fois donner des messages d'avertissement si vous utilisiez les pragmas strictes et avertissements:

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. 

Vous devriez aussi essayer de rester loin de l'utilisation $a ou $b comme variables dans un programme Perl car ceux-ci sont considérés comme des variables spéciales utilisées lors tri. Vous pouvez souvent vous en sortir, mais il est préférable de ne pas déranger avec eux.