9 Einträge, 1 Seite |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
#!/usr/bin/perl -w $muster ='(\d+\.\d+)'; $text = 4.12; print "\$text: $text\n"; 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";} $text = 4.0; print "\$text: $text\n"; if (@zahlen = $text =~ m/$muster/) {print "(3) wahr: @zahlen\n";} else {print "(3) falsch: @zahlen\n";} if (@zahlen = $text !~ m/$muster/) {print "(4) wahr: @zahlen\n";} else {print "(4) falsch: @zahlen\n";}
Quote~ $ perl
if ( @aa = 4.12 !~ m/\d+\.\d+/ ) {
print "wahr", $/;
} else {
print "falsch", $/;
}
wahr
~ $ perl
if ( 4.12 !~ m/\d+\.\d+/ ) {
print "wahr", $/;
} else {
print "falsch", $/;
}
falsch
~ $
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
#!/usr/bin/perl -w use Data::Dumper; $\="\n"; $muster ='(\d+\.\d+)'; for $text ( qw( 4.12 4.0 ) ) { print "\n\n\$text: $text\n"; if (@zahlen = ( $text =~ m/$muster/ ) ) {print ++$count,". wahr: @zahlen\n",Dumper \@zahlen;} else {print ++$count,". falsch: @zahlen\n",Dumper \@zahlen;} if (@zahlen = ( $text !~ m/$muster/ ) ) {print ++$count,". wahr: @zahlen\n",Dumper \@zahlen;} else {print ++$count,". falsch: @zahlen\n",Dumper \@zahlen;} }
KurtZ+2008-03-06 21:55:49--jup dachte ich mir !~ liefert dir ein leeres Array, das existiert und ist wahr, liefert beim Ausdruck nur Luft. Schau mal bei perlop was genau !~ liefern sollte (grübel ... )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
#!/usr/bin/perl -w use Data::Dumper; $\="\n"; $muster ='(\d+)(\.)(\d+)'; for $text ( qw( 4.12 4 ) ) { print "\n\n\$text: $text\n"; if (@zahlen = ( $text =~ m/$muster/ ) ) {print ++$count,". wahr: @zahlen\n",Dumper \@zahlen;} else {print ++$count,". falsch: @zahlen\n",Dumper \@zahlen;} if (not @zahlen = ($text =~ m/$muster/) ) {print ++$count,". wahr: @zahlen\n",Dumper \@zahlen;} else {print ++$count,". falsch: @zahlen\n",Dumper \@zahlen;} }
KurtZ+2008-03-06 21:55:49--jup dachte ich mir !~ liefert dir ein leeres Array, das existiert und ist wahr, liefert beim Ausdruck nur Luft.
KurtZ+2008-03-06 22:11:49--Also für mich siehts so aus als hätte !~ überhaupt keinen Listenkontext sondern nur den Wahrheitswert im scalaren Kontext. EDIT ein schönes Beispiel für eine fehlende Orthogonalität in Perl, die aber keiner vermisst
pq+2008-03-07 14:54:50--was sollte denn !~ bitteschön in einem array liefern? mit !~ fragt man nur, ob ein ausdruck *nicht*
matcht. warum will man das in einem listenkontext?
die gematchten teile bekommt man ja nur bei einer positiven abfrage.
9 Einträge, 1 Seite |