1
2
3
4
5
6
7
8
9
10
if(!db_update(\%dbo)) # hoffe dass das der pointer auf das objekt ist
usw.
sub db_update
{
my $p_dpo = $_[0]; # sollte auf das objekt zeigen
my $value = ${%dbo{'host'}}; # erscheint mir logisch, ist aber wohl falsch
my $value = ${%dbo}{'host'}; # will er gar nicht
my $value = $dbo{'host'}; # geht sowieso nicht
}
1 2 3 4 5 6 7
sub db_update { my $dpoR = shift; # get hash ref my $host = $dpoR->{'host'}; my $user = $dpoR->{'user'}; # ... }
2012-10-02T12:41:09 LinuxerDu hast einen Hash %dbo und willst auf einzelne (skalare) Werte zugreifen: $dbo{'user'}
Nun gibst Du eine Hash-Referenz an die Sub-Routine: foo( \%dbo )
Innerhalb der Sub hast Du jetzt nur eine Referenz, die auf den Hash verweist; also musst Du dereferenzieren: $hashref->{'user'}. Beachte die Pfeil-Syntax.
Siehe auch http://perldoc.perl.org/perlreftut.html
Angewandt auf Dein konkretes Beispiel:
Code (perl): (dl )1 2 3 4 5 6 7sub db_update { my $dpoR = shift; # get hash ref my $host = $dpoR->{'host'}; my $user = $dpoR->{'user'}; # ... }