sub sftp{ $|++; while(1){ last if $die == 1; if ( $go == 1 ){ my $seconds = 120; my %args = (host=>$server, user=>$user, timeout=>$seconds); my $sftp = Net::SFTP::Foreign->new(%args); last if ($sftp->error); $sftp->put("$waylcl\\waytemp", "$wayrmt/waytemp"); last if ($sftp->error); last if $die == 1; undef $sftp; #close current sftp $go = 0; #turn off self before returning } else { sleep 1; } # sleep if $go == 0 } }