2

我想将一个目录复制到几个目录中并script.pl在每个目录下执行一个。但是script.pl没有被执行(它没有打印你好)。

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);
}
4

1 回答 1

3

您的主要问题之一是您没有在反引号中捕获命令的返回值(输出)。你只是扔掉你想要的输出。执行以下操作:

my $output = `perl ./script.pl`

system("perl ./script.pl")
于 2013-06-23T13:08:35.927 回答