I have tracked the problem down, it is not to do with variables ending
with "i" but instead the options are not case sensitive.
Below is the code and output I have used to reproduce the error
##CODE##
#!/usr/bin/perl
use Getopt::Long qw(:config debug);
my ($x,$y);
@ARGV = qw(--fooi xxx);
GetOptions("fooi=s" => \$x,
"FOOI=i" => \$y);
##OUTPUT##
GetOpt::Long 2.32 ($Revision: 2.58 $) called from package "main".
ARGV: (--fooi xxx)
autoabbrev=1,bundling=0,getopt_compat=1,gnu_compat=0,order=1,
ignorecase=1,passthrough=0,genprefix="(--|-|\+)".
=> link "fooi" to SCALAR(0x806057c)
=> link "FOOI" to SCALAR(0x8060588)
=> $opctl{fooi} = ARRAY(0x804cd2c) ["i","FOOI",O,$,"<undef>"]
=> arg "--fooi"
=> find "--fooi"
=> split "--"+"fooi"
=> 1 hits (fooi) with "fooi" out of 1
=> found ["i","FOOI",O,$,"<undef>"] for "fooi"
Value "xxx" invalid for option fooi (number expected)