use subs 'open'; sub open { print "opening file: @_\n"; CORE::open(@_); } #### CORE::open($_[0], $_[1]); #### use subs 'open'; $file = $ARGV[0]; $method = $ARGV[1] eq 'bad' ? 0 : 1; sub open { my $count = scalar @_; print "opening file: @_ ($count)\n"; # Prints "opening file: TEST [filename] (2)" for either method my $return; if ($method == 0) { $return = CORE::open(@_); # doesn't work } else { $return = CORE::open($_[0], $_[1]); # works } return $return; } if ($result = open (TEST, $file)) { my $lineCount; for my $line () { last if $lineCount++ > 5; print "$line\n"; } close TEST; } else { print "couldn't open test.pl\n"; print "error info: $!\n" if $!; print "more error info: $^E\n" if $^E; }