Template::Toolkitのソート

CMSのテンプレートエンジンとして使えないかとTemplate::Toolkitをいろいろ弄っています。

Template::Toolkitには豊富なフィルタ、VirtualMethodが用意されています。
そのVirtualMethodのひとつにsortがあります。

配列の場合

[% array = [ 'japan', 'brazil', 'austrailia', 'croatia'] %]
[% array.sort.join %]

Output

austrailia brazil croatia japan

となります。

要素がハッシュの場合は、キーを与えることでソートできます。

[% hash_array = [
  { ja => '日本',           en => 'japan'},
  { ja => 'ブラジル',       en => 'brazil'},
  { ja => 'オーストラリア', en => 'austrailia'},
  { ja => 'クロアチア',     en => 'croatia'},
 ] %]
[% FOREACH entry = hash_array.sort('en') -%]
・[% entry.ja %]
[% END %]

Output

・オーストラリア
・ブラジル
・クロアチア
・日本

これだけでも十分な機能なのですが、次のようにもうひとつ下?のハッシュ値でソートができないものでしょうか?

[% hash_array = [
  { name => { ja => '日本',           en => 'japan'}      },
  { name => { ja => 'ブラジル',       en => 'brazil'}     },
  { name => { ja => 'オーストラリア', en => 'austrailia'} },
  { name => { ja => 'クロアチア',     en => 'croatia'}    },
 ] %]
[% FOREACH entry = hash_array.sort('name.en') -%]
・[% entry.name.ja %]
[% END %]

Output

・日本
・ブラジル
・オーストラリア
・クロアチア

これは、結果的にソートされません。

Stash.pmのsortの実装を見ると 'name.en' といった指定はできないことがわかります。

.(ドット)でsplitして、分解したキーでハッシュアクセスできると、期待のソートができるハズなのですが、動的に変える方法が分かりません。

   Stash.pm line:285                    ? $_->{ $field } :

$_->{ name }->{ en }のようになると期待の結果が得られるのですが、動的にやる方法が分かりません。
splitした数に応じて分けるのはあまりにイケテないし。。

こういったのは、あまり需要がないものなんでしょうかね。