Thread Slice von Hash of Hashes (3 answers)
Opened by mmrwe at 2015-07-02 16:17

mmrwe
 2015-07-02 16:17
#181465 #181465
User since
2014-10-13
5 articles
BenutzerIn
[default_avatar]
Ich verwende einen Hash of Hashes mit Namen als 1. und Zeitstempel als 2. Schlüssel.
Einem Namen (n0) kann ich mit einem Slice mehrere Werte (1,2,3) für mehrere Zeitstempel (z1,z2,z3) in einem Rutsch zuweisen.
Wenn ich aber mehreren Namen (n1,n2,n3) zu einem Zeitstempel (t0) mehrere Werte zuweisen möchte, fällt mir nur eine for-Schleife ein.
Ginge das auch direkt mit einem Slice?
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#! /usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my @n = ('n1','n2','n3');
my @z = ('z1','z2','z3');
my @w = (1,2,3);
my %h; # $h{Name}{Zeit} = Wert;

# hash-sclice für Name n0 und Zeiten z1-z3:
@{$h{n0}}{@z} = @w;
print Dumper(\%h),"\n";

# hash-sclice für Namen n1-n3 und Zeit z0:
%h = ();
$h{$n[$_]}{z0} = $w[$_] for (0..$#w);
print Dumper(\%h),"\n";


Eine weitere Frage:
Wie kann ich auf einfache Weise feststellen, ob der Hash leer ist oder Werte enthält, d.h. mindestens einen Namen mit mindestens einem Zeitstempel mit Wert? Muß man jeden Namen einzeln prüfen, ob der dahinter referenzierte Hash ein Wertepaar hat? Wenn ich einen HoH mit delete verkleinere, bleiben ggf. Referenzen auf leere Hashes übrig und der HauptHash %h ist nicht leer, hat aber keine Werte mehr.

View full thread Slice von Hash of Hashes