It basically means you used a variable with the value undef in a string concatenation (which is what string interpolation does under the covers)... er, array index in this case, but the warning is emitted whenever an undefined value is used as if it were already defined. "Uninitialized" may be a little misleading because you can still get this warning even if the variable has had a value assigned to it before:
my $str = 'foo';
print "$str\n"; # ok
$str = undef;
print "$str\n"; # emits "uninitialized" warning
It's not null. Null is a value (or at least the specific absence of one). It's uninitialized - there's never been a value assigned, and although Perl will try to do the right thing and assume 0 in numeric context or the empty string in string context, it really is just what it says: uninitialized.
Update: Just remembered, some DBs use Null the way you did, I think.
--Bob Niederman, http://bob-n.com
All code given here is UNTESTED unless otherwise stated.