Thread Ties und Hashrefs (9 answers)
Opened by J-jayz-Z at 2005-11-21 21:34

J-jayz-Z
 2005-11-22 01:11
#60303 #60303
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ich habe es nun versucht rekursiv alles zu tien, bekomm aber speziell das tie nicht hin.
Das rekursive Durchlaufen ist okay, das geht auch soweit. Nur wenn ich das aktuelle Element tie ist das nächste nicht mehr in der Ausgabe ...
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
45
#!/usr/bin/perl
use strict;
use warnings;

package main;

my $foo = { bla => { foo => { bar => "a"} } };

check($foo);

sub check {
my $bla = shift;
my @key;
if(ref($bla) eq 'HASH') {
@key = keys %{ $bla };
print "<<$key[0]>>\n";
# tie %{ $bla }, "myTieHash";
$bla = $bla->{$key[0]};
check($bla);
}
}

package myTieHash;

#Konstruktor für ein Hash Tie
sub TIEHASH {
my $class = shift;
my $self = { @_ };
return bless $self, $class;
}

#Routine für den Schreibzugriff
sub STORE {
my $self = shift;
my ($key, $value) = @_;
return $self->{ucfirst lc $key} = $value;
}

#Routine für den Lesezugriff
sub FETCH {
my ($self, $key) = @_;
return $self->{ucfirst lc $key};
}

1;

Wenn man das tie() wieder rein nimmt, sieht man mein Problem ...
Jemand ne Idee ?
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de

View full thread Ties und Hashrefs