#!perl -sw use strict; $^W=0; my @instances = ('a', 'b', 'c'); sub screwed { my ($in) = @_; open(IN, '<', $in); print "before while: @instances\n"; # while(local $_ = ) { while() { chomp; print "after while: @instances\n"; print "file $in contains $_\n"; } close(IN); } print "before $_\n" for @instances; screwed $_ for @instances; print "after $_\n" for @instances; __END__ P:\test>test before a before b before c before while: a b c after while: a1 b c file a contains a1 after while: a2 b c file a contains a2 before while: b c after while: b1 c file b contains b1 after while: b2 c file b contains b2 before while: c after while: c1 file c contains c1 after while: c2 file c contains c2 after while: c3 file c contains c3 after after after