Guten Morgen, ich benötige mal Hilfe vom Forum und den Perl-Experten. Ich möchte gern einen hash der Form
%eCharts_data{idx} = {{2024-02-05T00:22:33 => 47.2}, {2024-02-05T01:22:36 => 45.1}, ...
usw erzeugen lassen. Das geschieht in einer Schleife. Mir gelingt es aber nicht, den Hash aufzubauen, es erscheint immer nur das letzte Element:
while($dpoff < $dpl) {
...
if ($wert) {
my %charthash = ();
$charthash{$datum}= $wert;
$eCharts_data{$idx} = \%charthash;
}
...
Kann mir jemand sagen, was ich da falsch mache oder wo ich diesbezüglich etwas nachlesen kann?
Gefühlt sieht deine Logik komisch aus. In dem Then-Zweig definierst du den hash (charthash), schreibst genau ein Wertepaar rein und übergibst dies einem anderen hash-Element (eCharts_data). Sollte sich im nächsten Durchlauf $idx nicht ändern, überschreibst du das eCharts_data Element wieder mit dem dann neu definierten charthash Eintrag.
Du musst in einer Schleife erst charthash bilden und dann in einer weiteren Schleife diesen hash an eCharts_data übergeben.
Ok, danke, dann versuche ich das mal. Ich hatte diese Vorgehensweise aus einer Perl-Webseite
https://docstore.mik.ua/orelly/perl2/prog/ch09_03.htm
Sicher? Deine Lösung sieht eher nach 9.4. Hashes of Hashes (https://docstore.mik.ua/orelly/perl2/prog/ch09_04.htm) aus.
Trotzdem hast du in den Beispielen in den Kapiteln 9.3.2/9.4.2 zwei Schleifen um die Arrays/Hashes zu füllen.
Danke, das war in der Tat die falsche Zeile/Seite. Das klappt jetzt:
my ($datum, $wert) = split(" ", $l, 2);
if ($wert) {
$eCharts_data{$idx}{$datum."Z"} = $wert;
}
und damit füllt sich %eCharts_data.