gpt4 book ai didi

linux - 如何捕获 glob 运算符(operator)的权限被拒绝错误?

转载 作者:IT王子 更新时间:2023-10-29 01:22:24 26 4
gpt4 key购买 nike

以下简单的 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);

关于linux - 如何捕获 glob 运算符(operator)的权限被拒绝错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17216885/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com