Я действительно сделал что-то подобное. Но это было подготовить любой текущий сценарий FTP для запуска через SFTP, когда это необходимо.
Я создал объект-оболочку вокруг Net::SFTP
, который выглядит и действует как объект Net::FTP
. Поэтому все вызовы могут быть оставлены в местах с другой реализацией.
Я пошел от этого:
my $client = Net::FTP->new( Host => 'ftp.somehost.com', ... );
до
my $client = FTPClient->new( Host => 'ftp.somehost.com', ...
, secureFTP => 1
);
И только что реализовал все методы, которые я использовал с Net::FTP
в моем новом классе. Net::SFTP
возвращает несколько различных результатов, так что вам нужно фактически обернуть функцию вместо того, чтобы просто использовать что-то вроде Class::Delegator