./perl/test/CallersRestrictor.pm
download original
package CallersRestrictor;
use Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(restrictCallers);
sub restrictCallers {
no strict 'refs';
my $srcpkg = caller();
while (@_) {
my ($fname,$callers) = (shift,shift);
my $origfn = \&{"${srcpkg}::$fname"};
*{"${srcpkg}::$fname"} = sub {
my $caller = caller();
unless (grep /$caller/, @$callers) {
print "$caller not allowed to call ${srcpkg}::$fname\n"; return;
}
$origfn->(@_);
}
}
}
1;
back to test
(C) 1998-2017 Olaf Klischat <olaf.klischat@gmail.com>