我正在为Perl中的FTP服务器编写测试,但我无法获得我想要的消息。目前我写了一个看起来像这样的迷你程序;
my $ftp = Net::FTP->new($host, Debug => 0) or die "Cannot connect to $host: $@";
print @{[ $ftp->message ]}, "\n";
哪种方法效果很好,但我的回答是;
FTP SERVER
而不是实际的反应;
220 FTP SERVER
除了基本方法和选项之外,我找不到任何其他信息。有谁知道在哪里可以找到完整的文档?
答案 0 :(得分:2)
Net::FTP网站上提供了Perl Programming Documentation的第一份完整文档。这是一个非常好的小页面,显示了所有标准的Perl模块,Perl教程,Perl语言指南,FAQ以及其他 内置 Perl文档。没错,本网站上的所有信息都已在您的计算机上。 1
您需要的只是perldoc
命令。例如,Perl函数 shift 做什么?
$ perldoc -f shift
shift ARRAY
shift Shifts the first value of the array off and returns it,
shortening the array by 1 and moving everything down. If there
are no elements in the array, returns the undefined value. If
ARRAY is omitted, shifts the @_ array within the lexical scope
of subroutines and formats, and the @ARGV array outside a
subroutine and also within the lexical scopes established by
the "eval STRING", "BEGIN {}", "INIT {}", "CHECK {}",
"UNITCHECK {}" and "END {}" constructs.
See also "unshift", "push", and "pop". "shift" and "unshift"
do the same thing to the left end of an array that "pop" and
"push" do to the right end.
几乎所有模块都有相同的内置文档。由于Net::FTP
是标准模块集的一部分,因此您只需说出perldoc Net::FTP
并获取完整的文档。
这是Perl POD(普通旧文档)文档系统的一部分。如果您对Perl编程非常认真,我建议您了解Perl POD并在脚本中使用它。实际上,有一个很好的标准模块Pod::Usage,可用于直接从POD文档中显示程序帮助文本。
好的,但如果该模块的完整文档怎么办......呃技术术语是什么?哦,是啊......糟透了?如果文档根本不包含您要查找的信息怎么办?
在这种情况下,你将不得不卷起袖子深入研究代码。同样,perldoc
也可以帮助您:
$ perldoc -l Net::FTP
/System/Library/Perl/5.12/Net/FTP.pm
现在,您知道模块在系统中的存储位置。您现在可以使用自己喜欢的编辑器来查看代码。
还有一件小事:在Net::FTP
的代码中,有这样的陈述:
@ISA = qw(Exporter Net::Cmd IO::Socket::INET);
这意味着Net::FTP
是Net::Cmd
和IO::Socket::INET
的子类。您可能需要在这些模块上执行perldoc
以获取更多信息。很可能是您收到的错误消息是由这两个类中的一个生成的,而不是Net::FTP
生成的。
我可以在代码中看到您收到的邮件来自Net::Cmd->message
。你可能不得不深入研究,看看为什么你没有得到你认为应该的信息。从我所看到的,看起来它只是从FTP服务器本身返回消息。可能是您连接的FTP服务器基于不返回响应代码的旧代码。
1 请注意,Perl编程文档网站的默认文档适用于Perl 5.14,它可能是您的Perl版本,也可能不是。您可以通过网页左侧的下拉菜单调整Perl版本。尽管如此,由于各种原因,此网站可能无法反映您的系统上安装的您的版本的Perl。
答案 1 :(得分:0)
http://p3rl.org/Net::FTP#Methods-for-the-adventurous:
Net :: FTP继承自Net :: Cmd,因此Net :: Cmd中定义的方法可用于向远程FTP服务器发送命令。
因此,请查看Net::Cmd您找到message
最好朋友code
的位置。