You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 20:09:04