Es ist mir ein bislang zumindest mir nicht vordergründig bewußtes Verhalten bei Hashes aufgefallen.
Wenn man bei einem Hash einen nicht vorhandenen Schlüsselwert abfragt, wird dieser Schlüssel leer angelegt.
Ein kleines Beispiel zeigt was ich meine:
my %pv;
$pv{sl}{k00}{val} = 0;
$pv{sl}{k01}{val} = 1;
my $t = $pv{sl}{k02}{val} // 0;
Log3 ($name, 1, "$name - Test: ".Dumper %pv);
Wie ihr seht soll val des Schlüssels k02 einer Variablen zugewiesen werden.
Den Key k02 gibt es aber in dem Hash nicht.
Lässt man sich nach der Routine den Hash mit Dumper ausgeben ist zu sehen, dass der Key k02 leer angelegt wurde:
2021.03.21 16:51:20.262 1: SolCast - Test: 'sl'
{
'k02' => {},
'k00' => {
'val' => 0
},
'k01' => {
'val' => 1
}
}
Ich finde das Verhalten etwas merkwürdig, da ja kein Zuweisungsbefehl vorhanden ist.
LG,
Heiko