perl - 无法在 Perl 中使用 qx 从提示行完成命令

标签 perl prompt dir qx

我需要我的 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/

相关文章:

php - 目录的递归副本

php - 向上移动一个目录

postgresql - Perl PostgreSQL 查询执行两次

Perl 模块依赖组织和包含顺序

javascript - 仅在显示 gif 后提示警报

django - 如何将 'yes' 传递给 python manage.py flush?

perl - 在 Perl 脚本中,我们应该使用 shell 命令还是调用模仿 shell 操作的 Perl 函数?

perl - 使用 Test::MockObject->fake_module 时出现错误消息

zsh agnoster 主题 chagne prompt/ps1

batch-file - 如何在不显示扩展名的情况下进行目录(批量)