Schrift
[thread]8104[/thread]

Boolscher Wert eines Arrays?



<< >> 2 Einträge, 1 Seite
Gast Gast
 2006-06-22 20:12
#67563 #67563
Hallo,

bin noch ein Anfänger. Also verzeiht mir bitte wenn meine Frage ziemlich dämlich ist.

Mein Programm sie folgendermaßen aus:
$muster = '(\d)\.([^\D])';
$text = 4.12;

if (@zahlen = $text =~ m/$muster/)
{print "(1) wahr: @zahlen\n";}
else
{print "(1) falsch: @zahlen\n;}

if (@zahlen = $text !~ m/$muster/)
{print "(2) wahr: @zahlen\n";}
else
{print "(2) falsch: @zahlen\n;}

Die Ausgabe sieht so aus:
(1) wahr: 1
(2) wahr:

Und nun meine Frage:
Warum ist die zweite if Konstruktion auch wahr?
Warum ist @zahlen dann leer bzw. warum ist @zahlen definiert?

danke

mfg,
Mike
pq
 2006-06-22 21:51
#67564 #67564
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
perl liefert für erfolgreiche matches 1, und für nicht erfolgreiche matches den
leerstring. so sind booleans in perl definiert.
Code: (dl )
1
2
3
4
 perl -wle'
use Data::Dumper;
$x = !1; print Dumper $x'
$VAR1 = '';

d.h., @zahlen ist in deinem beispiel nicht leer, sondern enthält einen leerstring.
d.h. ich würde negative matches (also !~) nie einem array zuweisen.\n\n

<!--EDIT|pq|1150998738-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< >> 2 Einträge, 1 Seite



View all threads created 2006-06-22 20:12.