sub removeRemoteFile { my $file = shift; for (1 .. 5) { return TRUE if $sftp -> remove($file); sleep 30; } return FALSE; } #### sub removeRemoteFile { my %args = @_; for (1 .. $args{RETRIES}) { return TRUE if $sftp -> remove("$args{FILE}"); sleep $args{SLEEP}; } return FALSE; } #### sub getFile { my %args = @_; my $name = $args{FILE}; $name =~ s|.*/||; for (1 .. $args{RETRIES}) { my $size; if ($sftp -> get($args{FILE},"$args{LOCAL}/$name")) { $size = -s "$args{LOCAL}/$name"; } return TRUE if defined $size && $size == $args{RSIZE}; sleep $args{SLEEP}; } unlink "$args{LOCAL}/$name" if -f "$args{LOCAL}/$name"; return FALSE; } #### for my $file ( ... ) { if (getFile( ... )) { if (!removeRemoteFile( ... )) { warn "Couldn't remove remote $file!\n" } } else { warn "Couldn't download $args{REMOTE}/$file!\n"; } }