my $ftp = Net::FTP->new("XXX.XX.XX.XXX", Debug => 1, Port => 21, => Timeout => 300); my $num_tries = 0; my $max_tries = 5 #you decide how many times you want to try while ( !$ftp) { if ($num_tries< $max_tries) ) { ++$num_tries; $ftp = Net::FTP->new("XXX.XX.XX.XXX", Debug => 1, Port => 21, => Timeout => 300); } if ($num_tries >= $max_tries) ) { croak "Cannot connect to host, failed after $num_tries times : $@"; } }