in reply to Uninitialized value in concatenation

I copied your script into a new file and validated its syntax
perl -c z3.pl z3.pl syntax OK
But then, I added use strict; on line 3 and did the same procedure
perl -c z3.pl Global symbol "$i" requires explicit package name at z3.pl line 6. Global symbol "$input" requires explicit package name at z3.pl line 11 +. Global symbol "$input" requires explicit package name at z3.pl line 12 +. Global symbol "$fundcode" requires explicit package name at z3.pl line + 13. Global symbol "$input" requires explicit package name at z3.pl line 13 +. Global symbol "$fundcode" requires explicit package name at z3.pl line + 14. Global symbol "$input" requires explicit package name at z3.pl line 15 +. Global symbol "$input" requires explicit package name at z3.pl line 16 +. Global symbol "$input" requires explicit package name at z3.pl line 18 +. Global symbol "$input" requires explicit package name at z3.pl line 19 +. Global symbol "@in" requires explicit package name at z3.pl line 20. Global symbol "$input" requires explicit package name at z3.pl line 20 +. Global symbol "$i" requires explicit package name at z3.pl line 24. Global symbol "$final" requires explicit package name at z3.pl line 25 +. Global symbol "@in" requires explicit package name at z3.pl line 25. Global symbol "@in" requires explicit package name at z3.pl line 28. Global symbol "$fundcode" requires explicit package name at z3.pl line + 28. Global symbol "$fundcode" requires explicit package name at z3.pl line + 28. Global symbol "$i" requires explicit package name at z3.pl line 29. Global symbol "$fundcode" requires explicit package name at z3.pl line + 31. Global symbol "$fundcode" requires explicit package name at z3.pl line + 31. Global symbol "$fundcode" requires explicit package name at z3.pl line + 32. Global symbol "@in" requires explicit package name at z3.pl line 32. Global symbol "@in" requires explicit package name at z3.pl line 32. Global symbol "@in" requires explicit package name at z3.pl line 32. Global symbol "$outfile" requires explicit package name at z3.pl line +44. Global symbol "$outfile" requires explicit package name at z3.pl line +45. Global symbol "$final" requires explicit package name at z3.pl line 46 +. Global symbol "$file" requires explicit package name at z3.pl line 52. Global symbol "$file" requires explicit package name at z3.pl line 54. Global symbol "$file" requires explicit package name at z3.pl line 54. z3.pl had compilation errors.
And that matches line numbers (and a few more) where you are getting those messages.

No matter how simple the script may be use strict is not to be avoided and can save you some headaches.