これは、処理するタイハッシュの予想される直感的な動作です$h{a}++
。
$ perl -E'
sub DESTROY {}
sub AUTOLOAD { say "$AUTOLOAD @_"; bless {} }
tie %h, main;
$h{a}++;
'
main::TIEHASH main
main::FETCH main=HASH(0x7fb6c982a188) a
main::STORE main=HASH(0x7fb6c982a188) a 140423041558889
これもネストされたケースを処理することが期待され$h{a}{b}++
ますが、その理由も、最も重要なこととして、この動作をオーバーライドする方法もわかりません。
$ perl -E'
sub DESTROY {}
sub AUTOLOAD { say "$AUTOLOAD @_"; bless {} }
tie %h, main;
$h{a}{b}++;
'
main::TIEHASH main
main::FETCH main=HASH(0x7fbff102a188) a
Tie :: CHIをテストしているときに、これに遭遇しました。明らかに複雑なオブジェクトを保存することができます。
$ perl -MDateTime -MTie::CHI -E'
tie %c, "Tie::CHI", { driver => "File", root_dir => "." };
$c{a} = DateTime->now;
'
また、Perlは、深くネストされた構造から任意のデータを取得できます。
print Dumper $c{json}->{results}[0]{geometry}{location};
ただし、ネストされた構造内に格納することは、tie()されたハッシュでは機能しません。
$c{json}->{results}[0]{geometry}{location} = [0, 0];
Tie :: CHIにパッチを適用して、このケースをより多くのDWIMmeryで処理できますか?そうでない場合、代替手段は何ですか?