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