Прошло некоторое время с тех пор, как я использовал perl, и я пытаюсь распечатать список файлов на SFTP-сервере.Perl чтение файлов с сервера SFTP
Это мой Perl скрипт -
#! /usr/bin/env perl
use strict;
use warnings;
use feature qw(say);
use autodie;
use Net::SFTP::Foreign;
# US Server Configuration
use constant {
HOST => "Server_Name",
REMOTE_DIR => "\\",
LOCAL_DIR => "sample/local",
PORT => "3235",
USER_NAME => "name",
PASSWORD => "password",
BACKEND => "Net_SSH2",
DEBUG => "0",
};
my $stfp = Net::SFTP::Foreign->new (
HOST,
backend => BACKEND,
timeout => 240,
user => USER_NAME,
password => PASSWORD,
port => PORT,
autodie => 1,
);
#
# List remote directory contents
#
my $remotefiles;
$remotefiles = $stfp->ls(REMOTE_DIR);
#
# Loop through remote files and print each filename
#
foreach ($remotefiles){
my $file = $_;
my $filename = $file->{filename};
if($filename ne "." && $filename ne ".."){
print"the filename is $filename";
}
}
$stfp->disconnect;
Я получаю следующее сообщение об ошибке - не ссылка HASH на этой линии -> мой $ имя_файла = $ файл -> {имя_файла};
Не знаете, в чем проблема или как это исправить.
'$ filename' не является ссылкой на массив. '$ filename' никогда не получает значения. '$ remotefiles' - это ссылка на массив (и, следовательно, это' $ _' и '$ file'). –