http://qs321.pair.com?node_id=166964


in reply to ftp return value

The mput command is not implemented in Net::FTP, even though the documentation doesn't explicitly state the fact.

You can check $! for errors after a put, but from experience, this only relates to problems on the local host (e.g. "file not found"). To be absolutely certain that the file was tranferred to the remote host you could always do a dir and check the size of the remote file (modulo different sizes if transferring in ASCII between Unix and MS-DOS etc.).

You could gain a bit of clarity (and, possibly, encapsulate stuff) by using a loop:

for my $file ( $file1, $file2, $file ) { my $f = "$dir/$file"; $ftp->put( $f ) or warn "could not put $f: $!\n"; my $remote_size = get_remote_size( $f ); my $local_size = -s $f; if( $remote_size != $local_size ) { warn "$f not transferred correctly (local=$local_size, remote=$rem +ote_size)\n"; } }

... where the routine get_remote_size is left as an exercise to the reader. Hmmm... I should have read giant's post more carefully. The code presented there appears to do just that.


print@_{sort keys %_},$/if%_=split//,'= & *a?b:e\f/h^h!j+n,o@o;r$s-t%t#u'