HoH - ich steh auf der Leitung

Folgender Code funktioniert nicht:

my [at] dbs = ();
my %entries = ();
foreach my $entry ( [at] $eref) {
my ($db, $definition) = [at] $entry;
chomp $definition; # remove trailing \n
my ($key,$def) = split /\s*\n\s*/, $definition, 2;
$key_print = $key;
if ($last_db ne $db) {
push ( [at] dbs, $db); # remember sort order of $db
}
add_entry (\%entries,$db,$def,'');
$last_db = $db;
}

foreach my $db ( [at] dbs) {
my $hash_ref = \%entries;
my $def_ref = ${$hash_ref}{$db}; # FUNKTIONIERT NICHT
print "<br>db = $db key_ref = $def_ref ";
foreach my $def (sort keys %{$def_ref}) {
print "<br>db = $db def = $def";
}
}
print_keys (\%entries); # for Test only

sub add_entry {
my ($hashref,$db,$key,$value) = [at] _;
if ( exists ${$hash_ref}{$db} ) {
my $key_ref = ${$hash_ref}{$db};
${$key_ref}{$key} = $value;
}
else {
${$hash_ref}{$db} = { $key => $value };
}
}

sub print_keys {
my ($hashref) = [at] _;
foreach my $db (sort keys %{$hash_ref}) {
my $key_ref = ${$hash_ref}{$db}; # FUNKTIONIERT
foreach my $def (sort keys %{$key_ref}) {
print "<br>$db $def";
}
}
}

Die Ausgabe schaut dann (ohne HTML) so aus:

db = lasub key_ref =
[...]
lasub Viola adunca
lasub Viola affinis
lasub Viola agellae
[...]

Rätselhaft?

Helmut Wollmersdorfer
Helmut Wollmersdorfer [ Sa, 18 November 2006 22:15 ] [ ID #1540576 ]

Re: HoH - ich steh auf der Leitung

* Helmut Wollmersdorfer wrote in de.comp.lang.perl.misc:
> my $def_ref = ${$hash_ref}{$db}; # FUNKTIONIERT NICHT

Suchst du

my $def_ref = $hash_ref->{$db};

?
--
Björn Höhrmann · mailto:bjoern [at] hoehrmann.de · http://bjoern.hoehrmann.de
Weinh. Str. 22 · Telefon: +49(0)621/4309674 · http://www.bjoernsworld.de
68309 Mannheim · PGP Pub. KeyID: 0xA4357E78 · http://www.websitedev.de/
Bjoern Hoehrmann [ So, 19 November 2006 00:30 ] [ ID #1540577 ]

use strict! (was: HoH - ich steh auf der Leitung)

Helmut Wollmersdorfer wrote:

> foreach my $db ( [at] dbs) {
> my $hash_ref = \%entries;
^^^^^^^^^
[...]

> sub add_entry {
> my ($hashref,$db,$key,$value) = [at] _;
^^^^^^^^
> if ( exists ${$hash_ref}{$db} ) {
^^^^^^^^^^
Hätte ich gleich

use strict;

verwendet, wäre es mir schneller aufgefallen.

Helmut Wollmersdorfer
Helmut Wollmersdorfer [ So, 19 November 2006 10:12 ] [ ID #1541194 ]
Perl » de.comp.lang.perl.misc » HoH - ich steh auf der Leitung

Vorheriges Thema: Einfach Graphik
Nächstes Thema: freier Webshop in Perl?