如果我理解正確的話,這個程序應該做的你在做什麼:
use JSON qw(decode_json encode_json);
use strict;
use warnings;
# set the input line separator to undefined so the next read (<>) reads the entire file
undef $/;
# read the entire input (stdin or a file passed on the command line) and parse it as JSON
my $data = decode_json(<>);
my $from_field = "field6";
my $to_field = "field30";
for (@$data) {
$_->{$to_field} = $_->{$from_field};
}
print encode_json($data), "\n";
它依靠的JSON模塊上安裝,您可以通過cpanm安裝(這應該是最現代的Perl發行版中提供):
cpanm install JSON
如果程序文件substitute.pl
和你的JSON中陣列是data.json
,那麼您可以運行它:
perl substitute.pl data.json
# or
cat data.json | perl substitute.pl
應該產生:
[{"field30":"value6","field6":"value6"},{"field30":"value6","field6":"value6"}]
替換field30
的值爲field6
's。
這是你正在嘗試做什麼?
三個字;不不不。 – tripleee
那麼,有了適當的JSON庫,Perl應該沒問題,實際上。 – tripleee
不要手動做。使用像[Perl JSON]這樣的模塊(http://search.cpan.org/~makamaka/JSON-2.90/lib/JSON.pm#decode_json) – grebneke