diff options
| author | Tom Feist <shabble@metavore.org> | 2010-10-10 22:11:52 +0000 | 
|---|---|---|
| committer | Tom Feist <shabble@metavore.org> | 2010-10-10 22:11:52 +0000 | 
| commit | 745b2901e2f635d6a57cbe3e40695a6fe751f97b (patch) | |
| tree | 9f860e07ceb4182d1a6e19553275060fd401ca67 | |
| parent | added a brief proof-of-concept for loading/reloading additional functions on the (diff) | |
| download | irssi-scripts-745b2901e2f635d6a57cbe3e40695a6fe751f97b.tar.gz irssi-scripts-745b2901e2f635d6a57cbe3e40695a6fe751f97b.zip | |
tidied up loading code, added demo of calling func in outer scope
| -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(); },  }; | 
