Конструктор Net :: FTP позволяет передавать одно скалярное значение или массив хостов, которые нужно попробовать. Значение этого поля должно совпадать с PeerAddr из IO :: Socket :: INET (либо имя хоста , либо ip адрес ).
Внимательно посмотрите, что происходит, указав параметр Отладка. Если вы находитесь за брандмауэром или настройкой NAT, вам, вероятно, также следует установить для Passive ненулевое значение и убедиться, что конструктор завершился ошибкой, распечатав $ @.
my $ftp = Net::FTP->new(Host=>$host, Debug=>1, Passive=>1) || die $@;
Если конструктор завершился успешно, вы можете проверить, не завершился ли какой-либо из других методов:
$ftp->login($user, $pass) || die $ftp->message;
$ftp->cwd($path) || die $ftp->message;
Кстати: если вы не уверены, что использовали правильный параметр хоста, вы можете спросить Net :: FTP, к какому хосту он пытался подключиться:
print $ftp->host, "\n";
Если это все еще не работает, предоставьте подробный вывод вашего приложения.
Надеюсь, это поможет.