私が質問を理解する方法は、同じキーを持つ2つのハッシュです。最初のキーが特定のキーの値を持っていない場合は、そこにある別のハッシュの値を入れたいとします。
これらのハッシュをどのように作成するのかわからなかったので、私は自分の解決策を考え出しました。あなたはおそらくそれを無視することができます。私はConfig::Generalを使用して、"
と:
を削除してpidファイルを読みとって、JSONのためにJSONを使用しました。
use strict;
use warnings;
use Config::General;
use JSON 'decode_json';
use Data::Dumper;
# read the pid file
my %cfg_pid = Config::General->new(
-NormalizeOption => sub { my $x = shift; $x =~ s/^"|":$//g; $x; },
-NormalizeValue => sub { my $x = shift; $x =~ s/^"|"$//g; $x },
-ConfigFile => \*DATA
)->getall;
# read the json file
my $json = <<'JSON';
{
"connection": {
"file": {
"file_connection_1": {
"CLOUD_AUTHENTICATION": "",
"CLOUD_CONN_PROTOCOL": "",
"CONN_NAME": "file_connection_1",
"FILE_DIR": "/home/directory"
}
}
}
}
JSON
my $cfg_json = decode_json($json);
# this is before
print Dumper $cfg_json;
# actual part that you want
foreach my $key (keys %{ $cfg_pid{General} }) {
$cfg_json->{connection}->{file}->{file_connection_1}->{$key} = $cfg_pid{General}->{$key}
unless $cfg_json->{connection}->{file}->{file_connection_1}->{$key};
}
# and this is after
print Dumper $cfg_json;
__DATA__
<General>
"CLOUD_AUTHENTICATION": "YES"
"CLOUD_CONN_PROTOCOL": "PRTCL"
"CONN_NAME": "file_connection_1"
"FILE_DIR": "/home/directory"
</General>
それは本当にありませんすべては、pidファイルのハッシュのキーを反復処理し、そのキーの値がある場合は、JSONのハッシュをチェックインです。その値が真でない場合(つまり、キーが存在しない場合、値は、空の文字列はq{}
または0
)、これをpidファイルハッシュの値に設定します。もちろん空の文字列を明示的にチェックすることもできます。
出力は次のとおりです。
$VAR1 = {
'connection' => {
'file' => {
'file_connection_1' => {
'FILE_DIR' => '/home/directory',
'CONN_NAME' => 'file_connection_1',
'CLOUD_CONN_PROTOCOL' => '',
'CLOUD_AUTHENTICATION' => ''
}
}
}
};
$VAR1 = {
'connection' => {
'file' => {
'file_connection_1' => {
'FILE_DIR' => '/home/directory',
'CONN_NAME' => 'file_connection_1',
'CLOUD_CONN_PROTOCOL' => 'PRTCL',
'CLOUD_AUTHENTICATION' => 'YES'
}
}
}
};
ここではどのように.........この2つの点はあなたの質問では見逃されています。どこに - >サーバー側またはフロントエンドとあなたが使用している言語。 – Hemakumar
@Hemaタグと質問のタイトルによれば、OPはPerlを使用しています。 – ThisSuitIsBlackNot
既に持っているコードを追加する必要があります。どのようにファイルをハッシュに変換しますか?結果のデータ構造はどのように見えるのですか?見せる。これらの詳細を追加するには、質問を編集することができます。 – simbabque