我需要我的 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 和 closeir 但使用以下代码:
opendir ("Temp_VSS", $percorso1);
my @result = readdir ($percorso1);
closedir ("Temp_VSS");
我收到错误“dirhandle 符号错误”
最佳答案
不知道为什么会失败(可能 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);
关于perl - 无法在 Perl 中使用 qx 从提示行完成命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35333702/