2

我需要我的 perl 程序在 windows 命令行中执行 DIR 命令。我使用这些行:

$percorso1= C:\PerlEsercitazione\FileCompare1\VSS\Divina Cömmediä\ProgettoTest
my $cmd_string = "dir /ad /b ".$percorso1 ;
my @result = qx {$cmd_string};                              

显然$percorso1是要走的路。问题是@result结果是空的。我直接在 shell 中输入了 DIR 命令,它可以工作,所以问题应该出在 qx 函数中。我哪里错了?

无论如何,我尝试使用 readdir 、 opendir 和 closedir 但使用以下代码:

opendir ("Temp_VSS", $percorso1);
my @result = readdir ($percorso1);
closedir ("Temp_VSS");

我收到错误“dirhandle 的错误符号”

4

2 回答 2

2

不知道为什么会失败(可能是 dir 不是真正的可执行文件,而是一个 shell 命令,因此您可以尝试使用cmd /c "dir /ad /b $percorso1")。但通常最好避免使用外部程序来处理您具有内部功能的东西。

在这里特别是File::Slurp::read_dir可以更轻松地为您做同样的事情,并且具有内部错误处理:

my @files = File::Slurp::read_dir($percorso1, err_mode => 'carp', keep_dot_dot => 0);
于 2016-02-11T08:04:53.847 回答
1

$percorso1 声明缺少引号。您将需要反斜杠反斜杠。该行应以分号结尾。您还需要使用 utf8;因为您的源代码包含 utf8 编码字符。

对于第二个片段,请看这里: Perl: Bad Symbol for dirhandle

于 2016-02-11T12:20:47.493 回答