Hauptprogramm:
my %hash;
&Doc_Rep_info(\%hash);
#einfacher test auf inhalt
foreach my $ele ( keys(%hash)){
print "dokuart:"."$ele\n";
foreach my $ele2 (keys %{ $hash{$ele} }){
print "$ele2\n";
print "$hash{$ele}{$ele2}\n";
}
}
}
wie muss ich in diesem code referenzieren/dereferenzieren um den hash aus dem hauptrogram zu füllen?
Nebenprogramm:
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
# Doc_Rep_info speichert alle benötigten Informationen zur dokuart in einen hash
sub Doc_Rep_info{
open(DATEI, "<./Konfigurationsdaten/20060310.DOCFIELD") || die "Fehler beim öffnen von Datei $datei - $!";
my @Zeilen = <DATEI>;
close(DATEI);
my %hash2; <---betreffende Zeile
#my $hash2 = shift; etc ????
my $old_doc;
my %hash;
#Gehe Zeilen der Docfielddatei durch
foreach (@Zeilen){
if (/(\w+)\;(\d+)\;(\d+)/){
$dokuart = $1;
$zahl1 = $2;
$zahl2 = $3;
if(!defined $old_doc){
$old_doc = $dokuart;
}
#wenn dokuart nicht mehr die gleiche wie im letzten durchlauf der froeach-
#schleife speichere den hash in hash2 mit key alte dokuart.
if($dokuart!=$old_doc){
$hash2{$old_doc}=\%hash; <---betreffende Zeile
%hash;
}
#gehe Zeilen der Repository durch und speichere zahl und header in hash
open(DATEI, "<./Konfigurationsdaten/20060310.REPOSITORY") || die "Fehler beim öffnen von Datei $datei - $!";
my @Zeilen2 = <DATEI>;
close(DATEI);
foreach(@Zeilen2){
if(/^$zahl2;(^[;]+)/){
$hash{$zahl1}=$1;
}
}
}
$old_doc = $dokuart;
}
danke für die hilfe\n\n
<!--EDIT|shaihulud|1148487908-->