$ cat Module.pm package Module; our $global = shift(); # stole the first arg already... while( $arg = shift() ){ print "Module stealing arg: $arg\n"; }; 1; $ $ perl -e 'BEGIN { print "\nbefore using my module: ".join(", ",@ARGV)."\n" } use Module; BEGIN { print "\nafter using my module: ".join(", ",@ARGV)."\n" } print "Module::global: $Module::global\n";' one two three before using my module: one, two, three Module stealing arg: two Module stealing arg: three after using my module: Module::global: one $