Thread Problem mit Hashes/ Hashreferenzen /Arrays (5 answers)
Opened by f0 at 2010-11-11 01:25

f0
 2010-11-11 01:25
#142627 #142627
User since
2010-03-08
6 Artikel
BenutzerIn
[default_avatar]
Nabend,

ich habe ein kleines Problem mit Hashes / Hashreferenzen / Arrays:

Ich habe eine Subroutine die den Inhalt von 2 Hashes miteinander Vergleicht und bei einer Ungeleichheit einige Werte in ein Array Schreibt, was dann als Hash zurückgegeben wird (Kurz: ich vergleiche auf Unix Systemen die fstab und mount)

Ich habe folgenden Code
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
sub check_mount(){

my $must_mounted = shift(@_);
my $is_mounted = shift(@_);
my %erg;
my @not_mounted;
while ( my ($key, $value) = each(%$must_mounted) ) {

if ( not exists $is_mounted->{$key}){
push(@not_mounted,$key);
$erg{'servity'}='critical';
$erg{'mounts'} = \@not_mounted;
}
};

return %erg;

};


Aufgerufen wird er wie folgt:
Code: (dl )
%ergebnis = &check_mount(\%block_mounts,\%mounts);


Der inhalt von %block_mounts und %mounts ist so aufgebaut;

Code: (dl )
1
2
3
4
$VAR{
/ => /root
... => ...
}



Dies funktioniert wunderbar.

Ich muss die Subroutine allerdings mehrmals aufrufen, und %ergebnis enthält immer nur das Ergebnis des letzten Aufrufes, ist auch Logisch ich überschreibe es ja, nur wie bekomme ich es hin das alle aufrufe gespeichert werden (quasi der push wie bei nem array)? Ich steh da irgentwie total auf dem Schlauch.

Perl 5.8.8 (CentOS 5.5)

Gruß f0
Last edited: 2010-11-11 01:58:20 +0100 (CET)

View full thread Problem mit Hashes/ Hashreferenzen /Arrays