perl chdir和系统命令

时间:2013-06-28 08:20:16

标签: perl compare system chdir

我正在尝试在perl中使用chdir,但我无法理解出现的问题。 这段代码有效。

chdir('C:\Users\Server\Desktop')

但是当试图获取用户的输入时,它不起作用。我甚至尝试使用chomp删除可能出现的任何空格。

print "Please enter the directory\n";
$p=<STDIN>;
chdir ('$p') or die "sorry";
system("dir");

也有人可以解释一下我如何在同样的情况下使用系统命令以及它与chdir的区别。

最终目标是访问两个文件夹,检查名称相同的文件(例如:如果两个文件夹都有一个名为“water”的文件)并将具有相同名称的文件复制到第三个文件夹中。

2 个答案:

答案 0 :(得分:4)

chdir('$p')尝试更改为名为$p的目录。删掉单引号:

chdir($p)

此外,在阅读之后,您可能想要删除换行符(除非目录名确实以换行符结尾):

$p = <STDIN>;
chomp($p);

但是,如果您只是想要能够运行dir并在脚本中获得结果,那么您可能不希望这样做。首先,系统运行命令但不捕获其输出。其次,你可以这样做:

opendir my $dirhandle, $p or die "unable to open directory $p: $!\n";
my @files = readdir $dirhandle;
closedir $dirhandle;

并避免使用chdir并完全运行命令提示符命令。

答案 1 :(得分:1)

我将以这种方式使用它。

chdir“C:/ Users / Server / Desktop”

以上为我工作