首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl + LFTP多行命令

Perl + LFTP多行命令
EN

Stack Overflow用户
提问于 2014-01-27 22:57:05
回答 1查看 2.1K关注 0票数 1

我正在将一个现有脚本移植到perl中,在执行系统命令(特别是lftp)时遇到了一些困难。下面是我在bash做这件事的方法:

巴什:

代码语言:javascript
复制
lftp -u $ftpusername,$ftppass -e open $hostname << EOF
      set ftp:ssl-allow no
      set mirror:use-pget-n 5
      glob -a rm -r "${remote_dir}/file.php"
EOF

因此,我想知道如何在Perl中执行这个完全相同的命令。以下是我尝试过的,但没有结果的:

Perl:

代码语言:javascript
复制
system("lftp -u $ftpuser,$pass -e open $hostname
            set ftp:ssl-allow no
            set mirror:use-pget-n 5
            glob -a rm -r 'remote_dir/db-import.php'"
      );

任何帮助都将不胜感激,谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-28 00:35:01

perl:输入已执行命令的stdin

您可以使用open打开管道以执行程序(lftp)输入。

代码语言:javascript
复制
open( my $LFTP,'|-', "lftp -u $ftpuser,$pass -e open $hostname" ) 
  or die "Cannot open lftp: $!";
print $LFTP <<"END";
set ftp:ssl-allow no
set mirror:use-pget-n 5
glob -a rm -r 'remote_dir/db-import.php'
END
close($LFTP) or die; # die unless lftp exit code is 0

替代方法:使用IPC::Run这样的模块可以检查已执行的命令答复。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21393469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档