我正在尝试向Perl中的ftp打开句柄发送输入。我的脚本是
open (CALC, "|ftp abc.cde.com");
print "hello";
close CALC;
该网站仅接受匿名用户作为输入。我尝试过使用$guess = <STDIN>;
,但它无法正常工作。
我如何强制Perl询问用户以及硬编码用户?
答案 0 :(得分:4)
使用this模块可能会节省大量代码和挫败感。 Net :: 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;
}
我会在您的脚本中尽早请求用户和密码,然后您可以将其传递给$ ftp对象。使用该模块比使用exec或管道更好,因为它将内置错误报告,并且很容易为OO。
希望如果您需要更多帮助,这会有所帮助和评论。