以下简单的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] 举报,一经查实,本站将立刻删除。