in reply to what does "use of uninitialized value" really mean?
It means that a an array item you access has the value undef. This can occur for example if you index below the end of the array, or access an element that you never assigned to, or if the value that you assigned to it was simply undef.
Inspite of this i do get my expected output correctly.
If you use undef as a string, it acts like the empty string. If you use it as a number, it acts like 0 (except that it warns in both cases). So there are quite a few cases where the program works as it should, even though it emits those warnings.
But in the general case, the warning might be a hint towards a programming error.