2 use feature
qw(switch);
12 my ($class,$outer,$binds,$exprs) = @_;
13 my $data = { __outer__
=> $outer };
15 for (my $i=0; $i<scalar(@
{$binds->{val
}}); $i++) {
16 if (${$binds->nth($i)} eq "&") {
17 # variable length arguments
18 my @earr = @
{$exprs->{val
}}; # get the array
19 my @new_arr = @earr[$i..$#earr]; # slice it
20 $data->{${$binds->nth($i+1)}} = List
->new(\
@new_arr);
23 $data->{${$binds->nth($i)}} = $exprs->nth($i);
30 my ($self, $key) = @_;
31 if (exists $self->{$$key}) { return $self; }
32 elsif ($self->{__outer__
}) { return $self->{__outer__
}->find($key); }
33 else { return undef; }
36 my ($self, $key, $value) = @_;
37 $self->{$$key} = $value;
41 my ($self, $key) = @_;
42 my $env = $self->find($key);
43 die "'" . $$key . "' not found\n" unless $env;
52 #$e2->set('abc', 123);
53 #$e2->set('def', 456);
56 #my $e3 = Env->new($e2);
57 #$e3->set('abc', 789);
58 #$e3->set('ghi', 1024);
61 #print Dumper($e3->find('abc'));
62 #print Dumper($e3->get('abc'));
63 #print Dumper($e3->find('def'));
64 #print Dumper($e3->get('def'));