在Perl中发送ftp句柄的输入

在Perl中发送ftp句柄的输入,perl,ftp,Perl,Ftp,我试图用Perl向ftp打开的句柄发送一个输入。我的剧本是 open (CALC, "|ftp abc.cde.com"); print "hello"; close CALC; 该网站将只接受匿名用户作为输入。我试过使用$guess=但它不起作用。 如何强制Perl请求用户以及硬编码用户?使用模块可能会节省大量代码和挫折感。FTP是一个用Perl实现简单FTP客户端的类,如RFC959中所述。它为RFC959命令的子集提供包装 use Net::FTP; $ftp = Net::FTP-&

我试图用Perl向ftp打开的句柄发送一个输入。我的剧本是

open (CALC, "|ftp abc.cde.com");
print "hello";
close CALC;
该网站将只接受匿名用户作为输入。我试过使用
$guess=但它不起作用。

如何强制Perl请求用户以及硬编码用户?

使用模块可能会节省大量代码和挫折感。FTP是一个用Perl实现简单FTP客户端的类,如RFC959中所述。它为RFC959命令的子集提供包装

use Net::FTP;

$ftp = Net::FTP->new("some.host.name", Debug => 0)
  or die "Cannot connect to some.host.name: $@";

$ftp->login("$user","$Password")
  or die "Cannot login ", $ftp->message;

$ftp->cwd("/pub")
  or die "Cannot change working directory ", $ftp->message;

$ftp->get("that.file")
  or die "get failed ", $ftp->message;

$ftp->quit;
至于用户提示,如果您可以使用STDIN,那么下面应该可以使用

print "Enter username or press enter for anonymous: ";
my $user = <STDIN>; 
chomp $user;

if (length($user //= '')) {$user="anonymous";$password="INSERTPASSWORD"}
else {
print "Enter password for $user: ";
my $password = <STDIN>; 
chomp $password;
}
print“输入用户名或按Enter键输入匿名密码:”;
我的$user=;
chomp$user;
如果(长度($user/=''){$user=“匿名”;$password=“INSERTPASSWORD”}
否则{
打印“为$user输入密码:”;
我的$password=;
chomp$密码;
}
我会在脚本中尽早请求用户和密码,然后您可以将其传递给$ftp对象。使用该模块比使用exec或pipes更好,因为它内置了错误报告功能,并且易于OO


如果您需要更多帮助,希望本文能提供帮助和评论。

使用该模块可能会节省大量代码和挫折。FTP是一个用Perl实现简单FTP客户端的类,如RFC959中所述。它为RFC959命令的子集提供包装

use Net::FTP;

$ftp = Net::FTP->new("some.host.name", Debug => 0)
  or die "Cannot connect to some.host.name: $@";

$ftp->login("$user","$Password")
  or die "Cannot login ", $ftp->message;

$ftp->cwd("/pub")
  or die "Cannot change working directory ", $ftp->message;

$ftp->get("that.file")
  or die "get failed ", $ftp->message;

$ftp->quit;
至于用户提示,如果您可以使用STDIN,那么下面应该可以使用

print "Enter username or press enter for anonymous: ";
my $user = <STDIN>; 
chomp $user;

if (length($user //= '')) {$user="anonymous";$password="INSERTPASSWORD"}
else {
print "Enter password for $user: ";
my $password = <STDIN>; 
chomp $password;
}
print“输入用户名或按Enter键输入匿名密码:”;
我的$user=;
chomp$user;
如果(长度($user/=''){$user=“匿名”;$password=“INSERTPASSWORD”}
否则{
打印“为$user输入密码:”;
我的$password=;
chomp$密码;
}
我会在脚本中尽早请求用户和密码,然后您可以将其传递给$ftp对象。使用该模块比使用exec或pipes更好,因为它内置了错误报告功能,并且易于OO


希望这对您有所帮助,如果您需要更多帮助,请发表评论。

您为什么不使用Net::FTP模块?为什么不使用Net::FTP模块?我赞成。FTP是一个可怕的协议,需要手工重新实现。我支持。FTP是一种可怕的手动重新实现的协议。