Ich versuche, eine Liste der Schlüssel/Wert-Paare in einen Perl-Hash wie folgt zu "schieben". Ich dachte, es würde funktionieren, wie die Schlüssel-Wert-Paare zugewiesen werden, wenn ein Array einem Hash zugewiesen wird. @targets
enthält Tab-getrennte Strings für jedes Element. Jedoch wird der Hash für jede Iteration der Map-Schleife überschrieben und am Schluss habe ich nur ein Schlüssel-Wert-Paar im Hash erhalten, das dem letzten Element der @targets
entspricht. Ich versuche die üblichen $ID_Gene{$key}=$value
Typzuweisungen zu vermeiden.Pushing eine Liste der Schlüssel/Wert-Paare in Perl Hash
Wie pushen Sie eine Liste als Schlüssel-Wert-Paar zum Hash?
Alternativ ist es eine Möglichkeit, einen anonymen Hash bauen kann und schieben dann das Hash mit dem ursprünglichen Hash wie: %ID_Gene = (%ID_Gene, %AnonyHash);
my %ID_Gene;
map{ %ID_Gene= (split /\t/,$_) ;
}@targets;
ich bin nicht sicher, ich die 2. und 3. Lösungen lieben. Wenn '% ID_Gene' groß genug ist, ist eine Neuinitialisierung mit einer Liste, die aus eigenen Inhalten besteht, möglicherweise ineffizient. – tjd
@tjd Einverstanden. Ich bevorzuge 'foreach my $ target (@targets) {mein ($ k, $ v) = split/\ t /, $ target; $ ID_Gene {$ k} = $ v; } 'für einen vorhandenen Hash. – ThisSuitIsBlackNot
@ThisSuitIsBlackNot vereinbart, manchmal ist das besser, aber OP speziell nach nicht diese Lösung gefragt :) – hobbs