diff options
Diffstat (limited to 'feature-tests')
| -rw-r--r-- | feature-tests/subscript.pl | 26 | ||||
| -rw-r--r-- | feature-tests/test.sub | 3 | 
2 files changed, 25 insertions, 4 deletions
| 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(); },  }; | 
