PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Perl] if mit genauer übereinstimmung



Chakotay
08-11-2006, 09:49
wie formuliere ich eine if schleifen die nur reagieren soll wen der inhalt zweier variabelen exakt übereinstimmt
und nicht nur teilweise ???

zB.:
my $test = "test";
my $test1 = "test1";
my $test2 = "test";

if($test == $test1)# reagiert / soll es aber nicht
if($test == $test2)# soll dann aber reagieren

reneeb
08-11-2006, 09:54
Du solltest "use warnings" verwenden...

Das hier klappt:
if($test eq $test1){
print '$test ist gleich $test1: ',$test," -- ",$test1,"\n";
}
elsif($test eq $test2){
print '$test ist gleich $test2: ',$test," -- ",$test2,"\n";
}

Chakotay
08-11-2006, 09:59
das nenn ich mal ne schnelle antwort :-)
danke

Chakotay
08-11-2006, 10:23
was genau bewirkt dieses "use warnings" denn ???
hab schon "use strict" drin weil das viele kleiner bugs verhindert :-)

"use Glib qw/TRUE FALSE/" und "use Gtk2 '-init'" sind für die GUI auch noch mit drin

michael.sprick
08-11-2006, 10:58
Wie der Name schon vermuten lässt, werden Dir bei Verwendung des Pragmas 'warnings' detaillierte Warnungen ausgegeben... In Deinem Fall zum Beispiel so etwas in der Art:



Argument "test2" isn't numeric in numeric eq (==) at test.pl line 10.
Argument "test" isn't numeric in numeric eq (==) at test.pl line 10.


Dann kommt auch ganz schnell drauf, dass der Vergleich mit == evtl. falsch ist.

perldoc perlop:


Binary "==" returns true if the left argument is numerically equal to the right argument.
Binary "eq" returns true if the left argument is stringwise equal to the right argument.


HTH, Michael