Perl:当找不到文件时,抑制反引号的输出

iDe*_*Dev 2 regex perl backticks exitstatus

在我的代码中:

$status = `ls -l error*`;
Run Code Online (Sandbox Code Playgroud)

它显示输出:ls *error No such file or directory. 如何抑制此消息.我有兴趣确定是否生成了错误文件.如果是,我需要忽略文件列表(不打印消息)

mob*_*mob 8

通过运行它

$status = `ls -l error* 2> /dev/null`;
Run Code Online (Sandbox Code Playgroud)

并将外部命令的输出抑制为标准错误.

如果你只是需要的文件名(而不是所有其他信息是ls-l开关给你),这可以在纯Perl,以类似语句完成的

@files = glob("error*");
if (@files == 0) { 
    ... there were no files ...
} else { 
    ... do something with files ...
}
Run Code Online (Sandbox Code Playgroud)

如果您确实需要所有其他信息ls -l ...,将内置stat函数应用于每个文件名可以为您提供相同的信息.

  • `2>&1` 表示将标准错误流(文件描述符 2)放入标准输出(文件描述符 1)。`2>/dev/null` 表示丢弃标准错误流。 (2认同)