Thread Hash von arrays (5 answers)
Opened by Noisebreath at 2006-11-05 18:50

Noisebreath
 2006-11-05 18:50
#71440 #71440
User since
2006-04-14
72 Artikel
BenutzerIn
[default_avatar]
Habe mitbekommen dass man in perl kein hash von arrays erzeugen kann, sondern nur von arrayreferenzen.
Ich weiss daher nicht wie ich mein PRoblem lösen kann immer wieder ein neues array zu erzeugen dessen referenz ich in jedem weiteren durchlauf meiner schleife an den hash übergeben kann

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
sub Doc_type_header{
open(DATEI, "<./Konfigurationsdaten/20060310.DOCFIELD") || die "Datei nicht gefunden";
my @Zeilen = <DATEI>;
close(DATEI);

my $doc_type_header = shift;
my $dokuart;
my $zahl2;
my $old_doc;
my @headerarr;
#Gehe Zeilen der Docfielddatei durch

foreach (@Zeilen){

if (/([\w\$]+)\;(\d+)\;(\d+)\;/){
$dokuart = $1;
$zahl2 = $3;

if(!defined $old_doc){
$old_doc = $dokuart;
}

#wenn dokuart nicht mehr die gleiche wie im letzten durchlauf der froeach-
#schleife speichere eine kopie des hashs in hash2 mit key alte dokuart und
#leere danach wieder den hash um ihn für die nächste dokuart neu füllen zu können.
if($dokuart ne $old_doc){
$doc_type_header->{$old_doc}= \@headerarr;
my @headerarr =();
}

#gehe Zeilen der Repository durch und speichere zahl und header in hash
open(DATEI, "<./Konfigurationsdaten/20060310.REPOSITORY") || die "Datei nicht gefunden";
my @Zeilen2 = <DATEI>;
close(DATEI);

foreach(@Zeilen2){
if(/^$zahl2;([^;]+);([^;]+)/){
push(@headerarr.$i,$2);
}
}
}
$old_doc = $dokuart;
}
}



kann mir jemand sagen wie ich das machen kann? im moment habe ich immer nur eine arrayreferenz die ich dauernd ueberschreibe, aber ich möchte natürlich das alle verschiedenen arrayinfos in den hash gespeichert werden und nicht nur die eine referenz.

View full thread Hash von arrays