如何使用Perl读取JSON文件批量修改指定目录下的文件权限
Perl 读取JSON配置批量修改文件权限实现代码
完整补全后代码
#!/usr/bin/perl use strict; use warnings; use JSON; my $filename = 'demo.json'; my $data; { local $/ = undef; open my $fh, '<', $filename or die "无法打开配置文件 $filename: $!"; $data = <$fh>; close $fh; } my $result = decode_json( $data ); for my $report ( @{$result} ) { # 提取当前配置组的三个字段 my $dir = $report->{Directory}; my @target_files = @{$report->{Files}}; # 核心:将JSON中的十进制权限值转成chmod要求的八进制格式 my $permission = oct($report->{Permission}); # 遍历处理每个目标文件 for my $file (@target_files) { # 拼接文件完整路径 my $full_file_path = $dir . $file; # 先判断文件是否存在,避免无效操作 if (-f $full_file_path) { # 执行修改权限操作 if (chmod $permission, $full_file_path) { print "操作成功:已将 $full_file_path 权限修改为 " . sprintf("%o", $permission) . "\n"; } else { warn "操作失败:修改 $full_file_path 权限失败,错误信息:$!\n"; } } else { warn "跳过操作:目标文件 $full_file_path 不存在\n"; } } }
关键实现说明
- 新增了
use strict和use warnings,是Perl开发的标准规范,能提前捕获大部分语法和逻辑错误 - 补全了文件打开的异常判断,避免配置文件不存在时程序静默失败
- 权限转换:JSON中解析得到的Permission字段为十进制数值,而Perl的
chmod函数要求传入八进制格式的权限值,使用oct()函数完成转换,保证权限设置符合预期 - 增加了文件存在校验、操作结果反馈逻辑,方便排查执行过程中的问题
内容的提问来源于stack exchange,提问作者user2772676
相关产品推荐
相关产品推荐

