微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – 如何从glob运算符中捕获权限被拒绝的错误?

以下简单的Perl脚本将列出目录内容,并将该目录列为脚本的参数.如何在Linux系统上捕获权限被拒绝的错误?目前,如果此脚本在用户没有读取权限的目录上运行,则终端中不会发生任何事情.

#!/bin/env perl

use strict;
use warnings;

sub print_dir {
foreach ( glob "@_/*" )
  {print "$_\n"};
}

print_dir @ARGV

解决方法:

glob函数没有太多的错误控制,除了$!如果最后一个glob失败,则设置为:

glob "A/*"; # No read permission for A => "Permission denied"
print "Error globbing A: $!\n" if ($!);

如果glob成功找到一些东西,$!但是不会被设定.例如,即使无法列出目录内容,glob“* / *”也不会报告错误.

标准File::Glob模块中的bsd_glob函数允许设置标志以启用可靠的错误报告:

use File::Glob qw(bsd_glob);
bsd_glob("*/*", File::Glob::GLOB_ERR);
print "Error globbing: $!\n" if (File::Glob::GLOB_ERROR);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐