私は、未知数のさまざまなオブジェクトを含む設定ファイル用の設定パーサーを作成しています。すべてが独自のフィールドと値のペアを持っています。ハッシュの内容を別の大きなハッシュにコピーする
ObjectType1
name Alpha
host 127.0.0.1
ObjectType1
name Beta
host 10.11.12.13
ObjectType2
name AlphaPolicy
type This
useExtraWidgets true
だから私は素晴らしい作品フィールド/値のハッシュに個々のオブジェクトを解析しようとしている:
設定ファイルは次のようになります。私を引きつけているのは、個々のオブジェクトを追加して全体の構成を保持する大きなハッシュにしたいということです。このより大きなハッシュは、特定のオブジェクトのフィールド/値を保持する各オブジェクト型の配列を持つ必要があります。私はフィールド/値のハッシュをより大きなハッシュに合理的な方法でプッシュする方法を考え出すことはできません。
ここにコメント付きの擬似コードがあります。誰かが@s、$ s、括弧などが必要な場所で助けてくれますか?実際には動作しないので、擬似コードと呼びます。何も印刷しません。ありがとう。
my %hash1,%hash2;
$hash2{'name'} = "Alpha";
$hash2{'host'} = "127.0.0.1";
push @{$hash1{'ObjectType1'}}, %hash2;
undef %hash2;
$hash2{'name'} = "Beta";
$hash2{'host'} = "10.11.12.13";
push @{$hash1{'ObjectType1'}}, %hash2;
undef %hash2;
$hash2{'name'} = "AlphaPolicy";
$hash2{'type'} = "this";
$hash2{'useExtraWidgets'} = "true";
push @{$hash1{'ObjectType2'}}, %hash2;
print $hash1{'ObjectType1'}[0]{'name'}; #I want this to print "Alpha"
print $hash1{'ObjectType1'}[1]{'host'}; #I want this to print "10.11.12.13"
print $hash1{'ObjectType2'}[0]{'name'}; #I want this to print "AlphaPolicy"
あなたの変数には、 '%hash1'や'%hash2'よりも優れた名前を作るべきです。 – Borodin
ああ、間違いなく。これは単なる人工テストケースです。 – largesock
あなたが世界の消費のためにここに書いたサンプルの "人工的な"コードは非常に貧弱な識別子を持っているのに対し、あなた自身と他のいくつかの人によって読み込まれる最終的なコードは(おそらく) 。 – Borodin