Leser: 1
7 Einträge, 1 Seite |
1
2
3
4
5
6
7
8
use NEXT;
no strict 'refs';
*{$paket . '::function'} = sub {
my $this = shift;
# do something
$this->NEXT::function(@_);
};
1
2
3
4
5
6
7
8
9
10
11
sub printcaller {
my $caller = (caller(1))[3];
print "$caller\n";
}
my $paket = "testpaket";
*{$paket.'::function'} = sub {
printcaller();
};
testpaket::function();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
sub printcaller {
my $caller = (caller(1))[3];
print "$caller\n";
}
my $paket = 'testpaket';
eval qq{
sub ${paket}::function {
printcaller();
}
};
testpaket::function(); # Ausgabe: testpaket::function
1
2
$ perl -wle 'sub CORE::caller {print "foo"} caller'
Useless use of caller in void context at -e line 1.
QuoteSelbst wenn ich caller() überladen könnte, wäre das eine recht haarige Angelegenheit. Nachdem der Ersatz-caller aufgerufen wird, müsste er sofort wieder das Original herstellen, damit weitere, von NEXT aufgerufene, Subroutinen nicht durcheinander kommen.Finally, some built-ins (e.g. "exists" or "grep") can't be overridden.
7 Einträge, 1 Seite |