我正在尝试将文件从主机复制到创建的目录。这是我的剧本:
use strict;
use Getopt::Long;
use Net::SCP::Expect;
my $filename;
GetOptions(
"file=s" => \$filename
);
my $src_path="/";
my $directory;
open(INBOX, "<$filename") or die "Can't open $filename\n";
while(<INBOX>) {
chomp;
my @arr = split(/:/);
my $host=$arr[0];
my $username=$arr[1];
my $password=$arr[2];
sub main {
my $directory = "temp";
unless(-e $directory or mkdir $directory) {
die "Unable to create $directory";
}
}
main();
print "Copying from $host \n";
my $scpe = Net::SCP::Expect->new(
host => $host,
user => $username,
password => $password,
);
$scpe->scp($host . ":" . $src_path, $directory);
但是在这里我无法将文件从主机移动或复制到名为temp的创建目录。你能在Perl这方面帮助我吗?
答案 0 :(得分:1)
你在这里做范围很奇怪:
在你的sub中,这个 - 很奇怪 - 被称为“main”,你声明一个本地范围的变量$目录并为其指定“temp”。
然而,在第10行的主程序中声明的变量$目录保持为空 - 但这是在scp中使用的那个。
我建议改变这个
sub main {
my $directory = "temp";
unless(-e $directory or mkdir $directory) {
die "Unable to create $directory";
}
}
main();
进入那个:
$directory = "temp";
unless(-e $directory or mkdir $directory) {
die "Unable to create $directory";
}