Test::Baseのyamlフィルタで空配列を作るときの動作が理解できない

ある関数が空配列を返す事を期待したテストを書こうとしよう。
データはyaml形式で書くのが楽なので、そうする。
まずは、空配列の書き方を確かめよう。

use strict;
use warnings;

use Data::Dumper;
use YAML::Syck;
sub p { print Dumper shift }

my $yaml = <<END;
[]
END

p Load($yaml);
$VAR1 = [];

おk。じゃあテスト書こう。

use strict;
use Test::Base;
plan 'no_plan';

sub return_array_ref { [] }

filters {
    i => [qw/return_array_ref/],
    e => [qw/yaml/],
};

run_is_deeply;

__END__
=== 1st
--- i
--- e
[]
YAML Error: Expected separator '---'
   Code: YAML_PARSE_ERR_NO_SEPARATOR
   Line: 1
   Document: 2
 at /usr/lib/perl5/site_perl/5.8.5/YAML.pm line 33
# Looks like your test died before it could output anything.

え。また俺は間違えたのか。yaml形式すら書けなくなったのか。
そもそも間違ってるかもと疑って簡単な例を書いてみる。yamlのつもりで書いた部分がどう評価されるかdumperしてみる。

#!/bin/perl
use strict;
use Test::Base;
plan 'no_plan';

sub return_array_ref { [] }

filters {
    i => [qw/return_array_ref/],
    e => [qw/yaml dumper/],
};

run_is_deeply;

__END__
=== 1st
--- i
--- e
hoge: huga
array:
 - one
 - two
not ok 1 - 1st
#   Failed test '1st'
#   at /usr/lib/perl5/site_perl/5.8.8/Test/Base.pm line 338.
#     Structures begin differing at:
#          $got = ARRAY(0x934dfe4)
#     $expected = '{
#       'array' => [
#         'one',
#         'two'
#       ],
#       'hoge' => 'huga'
#     }
#     '
1..1
# Looks like you failed 1 test of 1.

yamlの書き方は間違ってないような気がする。


で、最初にしたかったことをするには、こう。

__END__
=== 1st
--- i
--- e
--- []

エラーメッセージ見て、こう書いたらいけんじゃね、と思ってやったらいけた。
何故だ。yamlフィルタは YAML::Load(shift) してるだけなのに。