Helmut Weber: Hash / Array Problem

Beitrag lesen

Hallo Bernd,

#!/usr/bin/perl -w
use strict;

my %yy;
my %xx = (x => 5, y => 10);
my @test = ("1","ff",223,"asfd","sg");

$test[1] = {%xx};
%yy = $test[1];

von Natur aus, kann ein Array nur Skalare Werte speichern. Wenn Du ein Hash in ein Array ablegen möchtest, musst Du dies über Referenzen tun!
Dazu solltest Du dir in deinen Perl-Handbüchern ein wenig das Thema "Referenzen" zur Brust nehmen!
Ich bin mit Referenzen zwar auch nicht so fit, würde aber folgendes Vorschlagen:
Eine Referenz auf ein Hash legst Du wie folgt an:
my $has_ref = %hash;
Analog zu deinem Beispiel:
$test[1] = %xx;

Eine Hash-Referenz kannst Du wieder wie folgt dereferenzieren:
my %hash = %$hash_ref;
Wieder zu deinem Beispiel:
my %yy = %$test[1];

Spiel einfach mal ein bischen mit Referenzen herum, Getestet habe ich die obigen Beispiele nicht, aber eine ungefähre Richtung für deine Lösung sollten sie schon geben.

Gruß
Helmut Weber

--
-------------------------------------------
Mode ist eine Variable, Stil eine Konstante