Thread Ganz simple Frage zum Operator !~
(8 answers)
Opened by Array at 2008-03-06 22:15 KurtZ+2008-03-06 21:55: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 Dat ist bei Perl bei FALSE ein Leerstring der dann in dein array gepackt wird. Bei TRUE ist es hingegen 1 (die du auch in ein Array wickelst). Mein Tip, wenn du wirklich ein Array aller Teilmatches haben willst dann nutze =~ und negiere die gesamte Aussage mit "unless" oder "if not" Code (perl): (dl
)
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;} } [nop]$text: 4.12 1. wahr: 4 . 12 $VAR1 = [ '4', '.', '12' ]; 2. falsch: 4 . 12 $VAR1 = [ '4', '.', '12' ]; $text: 4 3. falsch: $VAR1 = []; 4. wahr: $VAR1 = []; [/nop] Alles klar??? TMTOWTDYOG (there's more than one way to dig your own grave)
|