From 745b2901e2f635d6a57cbe3e40695a6fe751f97b Mon Sep 17 00:00:00 2001 From: Tom Feist Date: Sun, 10 Oct 2010 23:11:52 +0100 Subject: tidied up loading code, added demo of calling func in outer scope --- feature-tests/subscript.pl | 26 +++++++++++++++++++++++--- feature-tests/test.sub | 3 ++- 2 files changed, 25 insertions(+), 4 deletions(-) (limited to 'feature-tests') diff --git a/feature-tests/subscript.pl b/feature-tests/subscript.pl index 74a5afe..8550409 100644 --- a/feature-tests/subscript.pl +++ b/feature-tests/subscript.pl @@ -19,6 +19,10 @@ my $functions = {}; init(); +sub _input { + return int rand 1000; +} + sub load { my $file = shift; my $funcs; @@ -26,16 +30,32 @@ sub load { print "Loading from file: $file"; $funcs = do $file; } + if (not defined $funcs) { + if ($@) { + print "failed to parse $file: $@"; - return unless ref $funcs eq 'HASH'; - print "Got hashref from file"; + } elsif ($!) { + print "failed to read $file: $!"; + + } + return; + } + my $ref = ref $funcs; + if ($ref ne 'HASH') { + print "$file didn't return a hashref: ", defined $ref ? $ref : 'undef'; + return; + } foreach my $name (keys %$funcs) { my $func = $funcs->{$name}; + if (exists $functions->{$name}) { + print "Redefining function $name"; + } else { + print "adding function: $name"; + } $functions->{$name} = $func; } - $functions = $funcs; print "Loaded " . scalar(keys(%$funcs)) . " functions"; } diff --git a/feature-tests/test.sub b/feature-tests/test.sub index 6a24879..350e89d 100644 --- a/feature-tests/test.sub +++ b/feature-tests/test.sub @@ -1,6 +1,7 @@ { 'moo' => sub { print "Moo" }, - 'hello' => sub { print join(", ", @_) } + 'hello' => sub { print join(", ", @_) }, + 'inp' => sub { print "input is : ", _input(); }, }; -- cgit v1.2.3