The diagnostics states:
Use of uninitialized value in join or string at
/usr/opt/perl5/lib/5.8.8/IO/Socket/INET.pm line 83 (#1)
(W uninitialized) An undefined value was used as if it were already defined. It was interpreted as a "" or a 0, but maybe it was a mistake.
To suppress this warning assign a defined value to your variables. To help you figure out what was undefined, perl tells you what operation you used the undefined value in. Note, however, that perl optimizes your program and the operation displayed in the warning may not necessarily
appear literally in your program. For example, "that $foo" is usually optimized into "that " . $foo, and the warning will refer to the concatenation (.) operator, even though there is no . in your program.
We are passing parameters that contain the server userid password ascii/binary remote directory, local directory and file name. Those all appear to be filled in correctly.