无法在-e第1行的未定义值上调用方法“login”

时间:2016-05-24 20:21:51

标签: perl ncbi

这是我得到的错误,我复制并粘贴了一个名为ncbi的网站的直接命令集

cd ~
  perl -MNet::FTP -e \
    '$ftp = new Net::FTP("ftp.ncbi.nlm.nih.gov", Passive => 1); $ftp->login;
     $ftp->binary; $ftp->get("/entrez/entrezdirect/edirect.zip");'
  unzip -u -q edirect.zip
  rm edirect.zip
  export PATH=$PATH:$HOME/edirect
  ./edirect/setup.sh

我不知道该寻找什么,因为我不熟悉这些命令

编辑 所以有些东西是由网站上的某个人修复的,但我仍在尝试输入

'perl -MNet::FTP -e '$ftp = new Net::FTP("ftp.ncbi.nlm.nih.gov", Passive => 1); $ftp->login; $ftp->binary; $ftp->get("/entrez/entrezezdirect/edirect.zip");' 

并没有发生任何事情就像是因为我只是输入“猫”因为只是一个空行发生

3 个答案:

答案 0 :(得分:2)

FTP连接可能会出现很多问题,至少有一件事情出错了。 Net::FTP docs for new

  

如果构造函数失败,将返回undef,并在$@

中显示错误消息

所以你至少可以开始使用

来诊断问题
perl -MNet::FTP -e '$ftp=new Net::FTP("ftp.ncbi.nlm.nih.gov", Passive => 1) or print $@'

答案 1 :(得分:0)

它的代码对我来说很好。尝试将Debug设置为1,并在此处粘贴输出:

cd ~
  perl -MNet::FTP -e \
    '$ftp = new Net::FTP("ftp.ncbi.nlm.nih.gov", Passive => 1, Debug => 1); $ftp->login;
     $ftp->binary; $ftp->get("/entrez/entrezdirect/edirect.zip");'
unzip -u -q edirect.zip
rm edirect.zip
export PATH=$PATH:$HOME/edirect
./edirect/setup.sh

答案 2 :(得分:-1)

Net :: FTP的构造函数没有返回任何内容。这意味着它无法连接到指定的主机。

首先,在尝试调用$ftp方法之前,更改脚本以检查构造函数(login)的返回值。

在脚本之外,您应该检查是否可以通过FTP连接到主机。如果没有,请检查您的机器和防火墙设置。