想在 perl 中读取 JSON 个文件字符串(多个值)

Want to read JSON file strings (multiple values) in perl

以下是我的 json 文件 (demo.json)

 [
  {
     "Directory" : "/opt/gehc/abc/root/mr_csd/xxx/diag/",
     "Files" : [ "abc.html","xyz.html", 
                "mnp.html"],
     "Permission" : 555
  }
 ]

我想一个一个地读取“目录”中“文件”中的每个文件,并更改其“权限”

以下是我已经开始的代码,请帮忙:

#!/usr/bin/perl

use JSON;
my $filename = 'demo.json';

my $data;
{
    local $/ = undef;
    open my $fh, '<', $filename;
    $data = <$fh>;
    close $fh;
}

my $result = decode_json( $data );

for my $report ( @{$result} ) {

使用您自己的代码,您可以轻松地将 json 结构取消引用为更简单的结构:

my @files = @{ $result->[0]{Files} };
my $perm = $result->[0]{Permission};

print Dumper \@files, $perm;

将打印:

$VAR1 = [
          'abc.html',
          'xyz.html',
          'mnp.html'
        ];
$VAR2 = 555;

然后你可以用一个简单的 for 循环遍历文件:

for my $file (@files) { ...

chmod 必要的文件。尽管您可能需要将数字 555 准备为八进制,如文档中所述。

如果你有这个数组的多个级别,你称之为“报告”,你可以像这样遍历它们:

for my $report (@{ $result }) {
    my @files = @{ $report->{Files} };
    my $perm = $report->{Permission};
    print Dumper \@files, $perm;
}