aboutsummaryrefslogtreecommitdiffstats
path: root/feature-tests
diff options
context:
space:
mode:
authorTom Feist <shabble@metavore.org>2010-10-10 22:11:52 +0000
committerTom Feist <shabble@metavore.org>2010-10-10 22:11:52 +0000
commit745b2901e2f635d6a57cbe3e40695a6fe751f97b (patch)
tree9f860e07ceb4182d1a6e19553275060fd401ca67 /feature-tests
parentadded a brief proof-of-concept for loading/reloading additional functions on the (diff)
downloadirssi-scripts-745b2901e2f635d6a57cbe3e40695a6fe751f97b.tar.gz
irssi-scripts-745b2901e2f635d6a57cbe3e40695a6fe751f97b.zip
tidied up loading code, added demo of calling func in outer scope
Diffstat (limited to '')
-rw-r--r--feature-tests/subscript.pl26
-rw-r--r--feature-tests/test.sub3
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(); },
};