我想将目录复制到多个目录中,并在每个目录下执行script.pl
。但是script.pl
没有执行(它没有打印Hello)。
script.pl的内容是
#!/usr/bin/perl
print "Hello\n";
$ARGV[1]
是一个目录,其下有一个script.pl,我想将这个目录复制到几个目录(使用$ARGV[0]
提供的名称)。
$ARGV[0]
是一个目录,其中有几个文件,我将这些文件用作名称..
看起来像这样
perl this_program.pl Data X
Data X
A B C D script.pl
我想将X复制到A,B,C和D并执行A,B,C和D下的script.pl。
这是我的计划:
#/usr/bin/perl
use Cwd;
opendir(Dir,$ARGV[0]) or die "!!!\n";
@Data = readdir(Dir);
shift(@Data);
shift(@Data);
closedir Dir;
mkdir("Copys");
for($i=0;$i<=$#Data;$i++)
{
$working_dir = getcwd(); # Keep the path of current working directory
print $working_dir."\n";
`cp -r $ARGV[1] Copys/$Data[$i]`;
`mv Copys/$Data[$i] /disk`;
chdir("/disk/$Data[$i]"); #Change to /disk/A to execute the script.pl under A
$working_dir2 = getcwd();
print $working_dir2."\n";
`perl script.pl`; # Execute the script.pl under A
chdir($working_dir);
}
答案 0 :(得分:3)
您的一个主要问题是您没有在反引号中捕获命令的返回值(输出)。你只是扔掉你想要的输出。做类似的事情:
my $output = `perl ./script.pl`
system("perl ./script.pl")