我将我现有的一个脚本移植到perl中,并在执行系统命令(特别是lftp)时遇到了一些困难。以下是我在bash中的表现:
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中执行这个完全相同的命令。这是我尝试过的无用的东西:
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'"
);
任何帮助将不胜感激,谢谢!
答案 0 :(得分:1)
您可以使用open
打开管道执行程序(lftp
)输入。
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