Perl Net::FTP 得到错误远程文件名错误'ex.pl
Perl Net::FTP get error Bad remote filename 'ex.pl
我有一个名为 ftp 的文件,其中的文件名例如 ex.pl 作为其唯一内容,我是否正在尝试通过文件句柄读取它并将其存储在标量变量中并尝试通过 $ 获取它ftp->get 但它给出错误:错误的远程文件名'ex.pl
'
其中 ex.pl 是存储在我的目录中的实际文件。
这是我的代码:
sub restore () {
#open (IN,"ftpfile") or die "failed to open: $!";
open( INN, "ftp" ) or die "fail to open: $!";
my $array = <INN>;
print $array;
my $ftp = Net::FTP->new("$ARGV[0]") or die "host error: $@";
$ftp->login( "$ARGV[1]", "$ARGV[2]" )
or die "login error: ", $ftp->message;
$ftp->cwd("/home/qwerty/perl");
$ftp->get("$array") or die "error:", $ftp->message;
}
restore;
这里的问题是 - 你需要 chomp $array;
因为否则你会嵌入一个换行符。
我会注意到 - 你在 open
调用中做的事情有点混乱 - INN
将是一个全局文件句柄,你不会关闭它。最好是:
open ( my $input, "<", "ftp" ) or die $!;
my $filename = <$input>; #read one line;
chomp $filename;
我还建议在您的程序中更早地分配 name/login 等:
my ( $hostname, $login, $password ) = @ARGV;
因为这样你就可以错误地检查这些东西(例如,它们是否存在,是否有效等)。
我有一个名为 ftp 的文件,其中的文件名例如 ex.pl 作为其唯一内容,我是否正在尝试通过文件句柄读取它并将其存储在标量变量中并尝试通过 $ 获取它ftp->get 但它给出错误:错误的远程文件名'ex.pl ' 其中 ex.pl 是存储在我的目录中的实际文件。 这是我的代码:
sub restore () {
#open (IN,"ftpfile") or die "failed to open: $!";
open( INN, "ftp" ) or die "fail to open: $!";
my $array = <INN>;
print $array;
my $ftp = Net::FTP->new("$ARGV[0]") or die "host error: $@";
$ftp->login( "$ARGV[1]", "$ARGV[2]" )
or die "login error: ", $ftp->message;
$ftp->cwd("/home/qwerty/perl");
$ftp->get("$array") or die "error:", $ftp->message;
}
restore;
这里的问题是 - 你需要 chomp $array;
因为否则你会嵌入一个换行符。
我会注意到 - 你在 open
调用中做的事情有点混乱 - INN
将是一个全局文件句柄,你不会关闭它。最好是:
open ( my $input, "<", "ftp" ) or die $!;
my $filename = <$input>; #read one line;
chomp $filename;
我还建议在您的程序中更早地分配 name/login 等:
my ( $hostname, $login, $password ) = @ARGV;
因为这样你就可以错误地检查这些东西(例如,它们是否存在,是否有效等)。