Perl: Reference found where even-sized list expected

Christian Boltz <suse-/[email protected]>
Newsgroups gmane.linux.suse.programming
Message-ID <[email protected]>
Hallo Leute,

ich bastle gerade an einem kleinen Perl-Script, um aus einem Logfile 
eine Statistik zu erstellen. Dabei bin ich auf folgendes Problem 
gestoßen:

    Reference found where even-sized list expected at ./testcase.pl 
    line 16.
    Use of uninitialized value in concatenation (.) or string 
    at ./testcase.pl line 18.
    HASH(0x8151cd4)

Grund ist die scheinbar die Verwendung eines "verschachtelten" Hashes. 
(bei einfachen Hashes habe ich keine Probleme)

Testcase:

---------------------------------------------------------------------
#!/usr/bin/perl -w

use strict; use warnings;
my %hash; my $hashsumme;
my $tmp; my %tmphash;

# Beispieldaten
$hash{1}{1} = 2; $hash{1}{2} = 4;
$hash{3}{4} = 7; $hash{3}{1} = 1;

foreach (sort(keys(%hash))) {
    $tmp = $_; print "$tmp\n";
    %tmphash = $hash{$tmp};
    foreach (sort(keys(%tmphash))) {
        print "    " . $_ . " " . $tmphash{$_} . "\n";
    }
}
---------------------------------------------------------------------

Erwartete Ausgabe: (jeweils mit Kommentaren, wo die Werte herkommen)
1
    1  2   # $hash{1}{1} = 2;
    2  4   # $hash{1}{2} = 4;
3
    4  7   # $hash{3}{4} = 7;
    1  1   # $hash{3}{1} = 1;


Wo liegt mein Fehler?
Ich vermute, dass die Zuweisung %tmphash = ... so nicht richtig ist, 
habe aber auch nach längerem Austesten und Lesen von man perlref nicht 
die richtige Syntax gefunden :-(


Gruß

Christian Boltz
-- 
Die fontlinge sollen ... ähm... wie soll ich es sagen... eher visuell
als technisch orientierten Menschen bei der Verwaltung ihrer Fonts
helfen. Wenn die 'ne Kommandozeilenoption eintippen müssen, laufen sie
schreiend weg und verstecken sich zitternd hinter ihrem Mac, bis der
böse, böse Blinkecursor weggeht. ;-)     [Ratti in suse-programming]

-- 
Um die Liste abzubestellen, schicken Sie eine Mail an:
    suse-programming-unsubscribe-IBi9RG/[email protected]
Um eine Liste aller verfügbaren Kommandos zu bekommen, schicken
Sie eine Mail an: suse-programming-help-IBi9RG/[email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.