1

我正在尝试在 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”的文件)并将具有相同名称的文件复制到第三个文件夹中。

4

2 回答 2

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 并完全运行命令提示符命令。

于 2013-06-28T08:21:22.963 回答
1

我会以这种方式使用它。

chdir "C:/用户/服务器/桌面"

以上对我有用

于 2013-06-28T15:13:15.240 回答