Есть ли способ рекурсивного вывода списка файлов с использованием Net :: SFTP :: Foreign? - PullRequest
3 голосов
/ 30 апреля 2020

Я пытаюсь получить список всех каталогов, подкаталогов и файлов из удаленного рабочего каталога, используя Net::SFTP::Foreign.

В настоящее время я использую эту строку, чтобы получить список файлов на моем SFTP-сайте

my @newfilesLookedAtList = @{$sftp->ls(names_only => 1)}

Работает нормально, но показывает только каталоги. Мне нужен список имен файлов внутри каталогов. Я нашел этот ответ на сайте - { ссылка }, в котором говорится, что я могу использовать следующее:

$ sftp-> find (@paths,% opts) Делает рекурсивный выполнить поиск по указанному каталогу $ path (или directory @path) и получить список найденных записей или их общее количество в скалярном контексте.

Каждая запись является ссылкой на га sh с двумя ключи: имя файла, полный путь к записи; и a, объект Net :: SFTP :: Foreign :: Attributes, содержащий файл atime, mtime, разрешения и размер.

Когда я применяю приведенный выше код:

my @newfilesLookedAtList = @{$sftp->find('/', names_only => 1)};

мой файл @newfilesLookedAtList возвращается пустым.

1 Ответ

3 голосов
/ 30 апреля 2020

POD Net :: SFTP :: Foreign сообщает, что find возвращает список , что означает, что вы не должны пытаться разыменовать его. Изменить:

my @newfilesLookedAtList = @{$sftp->find('/', names_only => 1)};

на:

my @newfilesLookedAtList = $sftp->find('/', names_only => 1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...