#! /usr/local/bin/perl -w
use strict;
sub inner {
print " inner: $_\n" for @_;
}
sub outer {
print "outer: $_\n" for @_;
inner;
print "\n";
}
sub outer_amp {
print "outer_amp: $_\n" for @_;
&inner;
print "\n";
}
outer( qw/ vroon gukguk faba / );
outer_amp( qw/ foomp tweedle zachitty / );
__RESULTS__
outer: vroon
outer: gukguk
outer: faba
outer_amp: foomp
outer_amp: tweedle
outer_amp: zachitty
inner: foomp
inner: tweedle
inner: zachitty
When using the &inner variant, whatever remains of @_ in the calling routine is passed to the called routine. The only time it's really useful is when doing out-of-the-ordinary stuff like autoloading. In general you should avoid it. It leads to bad surprises
PS: metasyntactic function call arguments courtesy of BooK's Acme::MetaSyntactic module, the donmartin theme.
- another intruder with the mooring in the heart of the Perl
|