Leser: 23
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
use strict; use Data::Dumper; my @bsp = ( "a b 3 4 eins.txt", "c d 7 2 zwei.txt", "e f 4 4 drei.txt"); for my $i (0..$#bsp){ my @vals = split (/\s+/,$bsp[$i]); $vals[4] =~ s/\.txt$//; $bsp[$i] = {$vals[4] => [$vals[2],$vals[3]]}; } print Dumper(\@bsp);
@bsp = map{{(split)[4] => [(split)[2,3]]}} @bsp;
@bsp = map{{(split(/\./,(split)[4]))[0] => [(split)[2,3]]}} @bsp;
1 2 3 4 5
for my $element ( @bsp ) { my @vals = split /\s+/, $element; $vals[4] =~ s/\.txt$//; $element = {$vals[4] => [$vals[2],$vals[3]]}; }
1 2 3 4 5
for my $element ( @bsp ) { my( undef, undef, $Zahl, $andereZahl, $name ) = split /\s+/, $element; $name =~ s/\.txt$//; $element = {$name => [$Zahl, $andereZahl]}; }
1 2 3 4
for my $element ( @bsp ) { my( $Zahl, $andereZahl, $name ) = $element =~ /(\d+)\s+(\d+)\s+(.+)\.txt$/; $element = {$name => [$Zahl, $andereZahl]}; }
1 2
#Funktioniert nicht, nur sinngemäß gemeint @bsp = map{{(split)[4]) =~ s/.txt$// => [(split)[2,3]]}} @bsp;
2011-03-08T09:55:23 payxHallo Sven_123,
bei mir klappt es so:
Code (perl): (dl )@bsp = map{{((split)[4]=~/(.+)\.txt/) => [(split)[2,3]]}} @bsp;
@bsp = map{{((split)[4]=~/(.+)\.txt/) => [(split)[2,3]]}} @bsp;
2011-03-08T09:31:13 Sven_123(Hoffe ich darf hier meine Fragen auch zu keinen Problemen bei denen ich nicht weiter käme, sondern nur zum Neugier stillen stellen... ;)
1 2 3 4 5 6 7 8
use strict; use warnings; use Data::Dumper; my $eins = {"indirekt.txt" =~ /(.+)\.txt/ => "value"}; my %zwei; $zwei{"direkt.txt" =~ /(.+)\.txt/} = "value"; print Dumper($eins,\%zwei);
2011-03-08T11:02:57 Sven_123Ja. gibt es.Kann mir wer folgendes Ergebnis erklären?
Code (perl): (dl )1 2my $eins = {"indirekt.txt" =~ /(.+)\.txt/ => "value"}; my %zwei; $zwei{"direkt.txt" =~ /(.+)\.txt/} = "value";
Bei der ersten Methode wird also $1 als key benutzt, bei der zweiten nur eine 1 als true. Gibt es da eine Logik dahinter, oder nicht?
$zwei{(),"direkt.txt" =~ /(.+)\.txt/} = ...
$zwei{("direkt.txt" =~ /(.+)\.txt/)[0]} = "value";
2011-03-08T11:02:57 Sven_123(ich schreib das ganze jetzt in einen Hash, da fällt map natürlich weg)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
use strict; use warnings; use Data::Dumper; my @bsp = ( "a b 3 4 eins.txt", "c d 7 2 zwei.txt", "e f 4 4 drei.txt" ); my %hash = map { my( $Zahl, $andereZahl, $name ) = /(\d+)\s+(\d+)\s+(.+)\.txt$/; $name => [$Zahl, $andereZahl]; } @bsp; print Dumper(\%hash);