use warnings;
use Exporter 'import';
-use Data::Dumper;
{
package Env;
+ use Data::Dumper;
sub new {
my ($class,$outer,$binds,$exprs) = @_;
my $data = { __outer__ => $outer };
if ($binds) {
- for (my $i=0; $i<scalar(@{$binds}); $i++) {
- if (${$binds->[$i]} eq "&") {
+ for (my $i=0; $i<scalar(@{$binds->{val}}); $i++) {
+ if (${$binds->nth($i)} eq "&") {
# variable length arguments
- my @earr = @$exprs; # get the array
+ my @earr = @{$exprs->{val}}; # get the array
my @new_arr = @earr[$i..$#earr]; # slice it
- $data->{${$binds->[$i+1]}} = List->new(\@new_arr);
+ $data->{${$binds->nth($i+1)}} = List->new(\@new_arr);
last;
} else {
- $data->{${$binds->[$i]}} = $exprs->[$i];
+ $data->{${$binds->nth($i)}} = $exprs->nth($i);
}
}
}
}
sub find {
my ($self, $key) = @_;
- if (exists $self->{$key}) { return $self; }
+ if (exists $self->{$$key}) { return $self; }
elsif ($self->{__outer__}) { return $self->{__outer__}->find($key); }
else { return undef; }
}
sub set {
my ($self, $key, $value) = @_;
- $self->{$key} = $value;
+ $self->{$$key} = $value;
return $value
}
sub get {
my ($self, $key) = @_;
my $env = $self->find($key);
- die "'" . $key . "' not found" unless $env;
- return $env->{$key};
+ die "'" . $$key . "' not found\n" unless $env;
+ return $env->{$$key};
}
}