in reply to if statement/uninitialized value

If you get an uninitialized warning it means that the variable in question hasn't been assigned a value yet e.g
my $var; print "\$var not defined" unless defined $var;
Here the output will be "$var not defined" because $var hasn't been assigned a value yet so it defaults to undef when evaluated.

Concerning your last problem

if ((-e $info) and ($query ne /support/))
The ne operator will compare two *strings*. So what is happening there is something like this
if ((-e $info) and ($query ne ($_ =~ /support/)))
Which is not what you want, so you should probably change the ne to a negated regex match (which is !~).
HTH

_________
broquaint