Although the other answers are fine, there is a subtlety you might want to be aware of. Calling the function from the anonymous sub will affect the call stack. You can avoid that by using the magical goto &sub form.
sub foo { print "foo @_\n"; for (0..2) { print join('|', caller($_)), "\n" if caller($_); } print "\n"; } my $r1 = sub { foo("bar", @_) }; my $r2 = sub { unshift @_, "bar"; goto &foo }; foo(); $r1->('baz'); # This call has an extra frame in the call stack. $r2->('baz', 'qux');
One word of caution. Using this technique will make your prototypes pretty useless. That's OK though because usually prototypes are worse than useless anyway. You almost certainly shouldn't be using them. If you do choose to use them, you should first have a good understanding of the points raised in this article by Tom Christiansen.
-sauoq "My two cents aren't worth a dime.";
In reply to Re: subref with stored argument?
by sauoq
in thread subref with stored argument?
by Flame
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |