#! perl -slw use strict; sub freaky { my $ref = \@_; return sub { print "$ref->[ 0 ] $_[ 0 ]"; $ref->[ 0 ] = 'joe'; $_[ 0 ] = 'john'; } } my $outerArg = 'bill'; my $freaky = freaky( $outerArg ); my $innerArg = 'fred'; $freaky->( $innerArg ); print "$innerArg $outerArg"; ( $innerArg, $outerArg ) = ( 'kate', 'suzy' ); my $innerArg2 = 'bluto'; $freaky->( $innerArg2 ); print "$innerArg $innerArg2 $outerArg"; __END__ P:\test>374759 bill fred john joe suzy bluto kate john joe