Catalyst::Plugin::FormValidator::Simple::AutoでマルチカラムのUNIQUEチェックをする場合

昨日に引き続き今日もまた躓いています。
FormValidator::Simple::Plugin::DBIC::Uniqueでマルチカラムのユニークチェックをしたい。
たとえば「このID(自分自身)以外で名前が重複するカラムがあるか?」みたいなチェックをするためには

SELECT COUNT(*) FROM table WHERE id != ? AND name = ?

みたいなSQLが必要で、それをやるためには、

    # check multiple columns including '!=' check
    # set "!" as prefix for key-name
    FormValidator::Simple->check( $q => [
        { unique => [qw/id name email/] } => [ [qw/DBIC_UNIQUE Table !id name mail/] ]
    ] );

みたいにする。
例によってこの設定をYAMLに書きたいわけですが書き方がわかりません。
試しに以下のようなコードを試してみた。

#!/usr/bin/perl
use strict;
use warnings;
use YAML;
use Data::Dumper;

my $data = YAML::Load(<<'END_OF_YAML'
---
  {unique: ['id', 'name']}:
    - ['DBIC_UNIQUE', '__c_model(DBIC::Category)__', '!id', 'name']
END_OF_YAML
);

my ($key_hash) = keys %$data;
print "key is not hash!\n" unless ref $key_hash eq 'HASH';
print Dumper $data;

結果はこれ。

key is not hash!
$VAR1 = {
          'HASH(0x8599f14)' => [
                                 [
                                   'DBIC_UNIQUE',
                                   '__c_model(DBIC::Category)__',
                                   '!id',
                                   'name'
                                 ]
                               ]
        };

キーの部分が文字列になってしまっています。
ハッシュはキーにできないのかなあ。

    • -

http://yaml.org/spec/current.html
YAML - YAML Ain't Markup Language (tm) - metacpan.org

    • -

更新してないのに何度もフィードが更新されてきていい加減うざいんでちょっと変更しました(上のリンクの部分)。