It does even more if you are using the -i flag.
Update: to be more explicit, under -i, a simple eof() will (if needed) pull the next file(s) off of @ARGV, renaming and creating a new file for each until it gets to a non-empty one, and then selects that one as the default output file:
$ rm foo{.bak,};echo bar>foo;perl -i.bak -we'sub show { print STDOUT "
+files: ",
join(",", glob("*")), "\nselected: $_\n" and select $_ for select *{"
+TEMP"} }
show; print STDOUT eof() ? "eof\n" : "not eof\n"; show' foo
files: foo
selected: main::STDOUT
not eof
files: foo,foo.bak
selected: main::ARGVOUT