Dynamisches Füllen eines Hashes
Schnaps
- perl
0 Struppi
servus
ich habe bis jetzt folgenden (relevanten) Quellcode geschrieben.
for (my $i=0;$i<@input;$i++) {
my $string=$input[$i];
$string=~/^(\w*)\s{4,}([\w|-]*)$/;
my $ident=$1;
my $seq=$2;
if (!exists $alignment{$ident}){
%alignment= ( $ident => $seq );
}
}
Der erste Teil klappt auch soweit, ich habe bei jedem Durchlauf den Inhalt den ich auch haben will in den Variablen $ident und $seq.
Also am Pattern liegt es nicht.
Und nun möchte ich diese beiden Werte in ein Hash Schreiben und zwar so , dass $ident der Schlüssel ist und $seq dann der Wert von Schlüssel.
Wenn es aber schon einen Schlüssel $ident gibt soll der Wert $seq an den schon vorhandenen Wert konkateniert werden.
Im wesentlichen scheitert es halt an dem dynamischen füllen des Hashes,
wenn ich mir das Hash nach der for Schleife ausgeben lasse ist nichts drin.
Die einzelnden Werte in der for Schleife kann ich aber korrekt anzeigen lassen.
Danke schon mal für euere Mühe.
MFG
Schnaps
for (my $i=0;$i<@input;$i++) {
Du programmierst noch nicht lange in Perl?
In Perl kann man ein Array einfach mit foreach durchlaufen.
foreach my $string(@input)
my $string=$input[$i];
$string=~/^(\w*)\s{4,}([\w|-]*)$/;my $ident=$1;
my $seq=$2;
ist eigentlich überflüssig hier noch Variabeln zzu erzeugen oder?
und natürlich muss man immer prüfen ob das funktioniert hat was man machen wollte.
die "Fehler im Datensatz $string" if !defined $1 || !defined $2;
$alignment{$1} .= $2 if defined $alignment{$1};
$alignment{$1} = $2 unless $alignment{$1};
Struppi.