Thread Marker fürs Bearbeiten bestimmter Bereiche in Textdatei gesucht (11 answers)
Opened by Pauline25 at 2011-08-10 14:06

FIFO
 2011-08-22 14:09
#151739 #151739
User since
2005-06-01
469 Artikel
BenutzerIn

user image
Hi,
es ist vielleicht nicht so geschickt, Variablennamen mehrfach zu verwenden ($array/@array usw.), man kommt schnell durcheinander.
2011-08-22T10:22:30 Pauline25
Code (perl): (dl )
1
2
3
4
my $BMB;
while (($GeneID, $BMB) = each %hash) {
    print "$GeneID => $BMB[0]\n";
}

Die skalare Variable $BMB wird zwar bei jedem Schleifendurchlauf mit der Arrayreferenz in $hash{$GeneID} gesetzt, ausgegeben wird allerdings immer das erste Element des Arrays @BMB.
Wahrscheinlich meinst Du das (mit Dereferenzierung):
Code (perl): (dl )
1
2
3
while (my($GeneID, $BMB) = each %hash) {
    print "$GeneID => $BMB->[0]\n";
}

also das erste Element in @{$hash{$GeneID}}. Das kannst Du auch so schreiben:
Code (perl): (dl )
1
2
3
for my $GeneID (keys %hash) {
    print "$GeneID => $hash{$GeneID}->[0]\n";
}

Das erlaubt auch bequem sortierte Ausgaben, einfach sort vor keys %hash einfügen.

Nebenbei: Für
Code (perl): (dl )
@BMB = ($array[3], $array[4], $array[6]);

gibt es die schönere Slice-Variante:
Code (perl): (dl )
@BMB = @array[3,4,6];


Gruß FIFO

Last edited: 2011-08-22 14:12:22 +0200 (CEST)
Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it? -- Brian Kernighan: "The Elements of Programming Style"

View full thread Marker fürs Bearbeiten bestimmter Bereiche in Textdatei gesucht