我需要我的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的符号不好”
发布于 2016-02-11 16:04:54
不确定这失败的原因(可能是目录不是真正的可执行文件,而是一个外壳命令,所以您可以尝试使用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-11 20:20:47
$percorso1声明缺少引号。您将需要反斜杠反斜杠。行应该以分号结束。您还需要使用utf8;,因为您的源代码包含utf8编码的字符。
对于第二个代码片段,请查看此处:Perl: Bad Symbol for dirhandle
https://stackoverflow.com/questions/35333702
复制相似问题