想在 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;
}
以下是我的 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;
}