加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-14 01:01:01 所属栏目:Linux 来源:网络整理
导读:以下简单的Perl脚本将列出目录的内容,并将该目录列为脚本的参数.如何在 Linux系统上捕获权限被拒绝的错误?目前,如果此脚本在用户没有读取权限的目录上运行,则终端中不会发生任何事情. #!/bin/env perluse strict;use warnings;sub print_dir {foreach ( glo
以下简单的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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读