Leser: 1
10 Einträge, 1 Seite |
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
#!/usr/bin/perl
use strict;
use warnings;
package main;
my %foo;
tie %foo, "myTieHash";
$foo{BluBb} = "foo";
$foo{grML} = "bar";
print $foo{BlUbb} . "\n";
print $foo{grml} . "\n";
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;
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;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use Tie::CPHash;
$foo = rectie({ bla => { foo => { bar => "a"} } });
warn $foo->{BLA}->{FOO}->{BAR};
sub rectie {
my($hashref) = @_;
while(my($k,$v) = each %$hashref) {
if (UNIVERSAL::isa($v, "HASH")) {
my $new_v = rectie($v);
$hashref->{$k} = $new_v;
}
}
tie my %newhash, "Tie::CPHash";
%newhash = %$hashref;
\%newhash;
}
10 Einträge, 1 Seite |