in reply to Defaults for command line args

How about:
my $infileold = $ARGV[0] || $fileold; my $infilenew = $ARGV[1] || $filenew;
Or, if you want to get rid of those args from @ARGV, you could use shift:
my $infileold = shift || $fileold; my $infilenew = shift || $filenew;