in reply to @ARGV being corrupted

If you use one of the Getopt modules, say Getopt::Std, does it work then? It could be a problem with your argument handling code.

In place of your current argument grokking code, try:

use Getopt::Std; my %args; getopts ('V:', \%args); print $args{'V'};
Do you get the expected results?