首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从提示行完成命令,请在Perl中使用qx

无法从提示行完成命令,请在Perl中使用qx
EN

Stack Overflow用户
提问于 2016-02-11 15:57:44
回答 2查看 69关注 0票数 2

我需要我的perl程序在windows命令行中执行DIR命令。我使用以下几行代码:

代码语言:javascript
复制
$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,但使用了以下代码:

代码语言:javascript
复制
opendir ("Temp_VSS", $percorso1);
my @result = readdir ($percorso1);
closedir ("Temp_VSS");

我得到的错误是“dirhandle的符号不好”

EN

回答 2

Stack Overflow用户

发布于 2016-02-11 16:04:54

不确定这失败的原因(可能是目录不是真正的可执行文件,而是一个外壳命令,所以您可以尝试使用cmd /c "dir /ad /b $percorso1")。但通常情况下,最好避免使用具有内部函数的外部程序。

在这里,File::Slurp::read_dir可以更容易地为您做同样的事情,并且具有内部错误处理功能:

代码语言:javascript
复制
my @files = File::Slurp::read_dir($percorso1, err_mode => 'carp', keep_dot_dot => 0);
票数 2
EN

Stack Overflow用户

发布于 2016-02-11 20:20:47

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

对于第二个代码片段,请查看此处:Perl: Bad Symbol for dirhandle

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35333702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档