use Test::More; use Test::Differences; sub flatten($) { my $out = join "|", @{ Test::Differences::_flatten( Test::Differences::_grok_type( $_[0] ), $_[0] ) }; $out =~ s/ +//g; $out; } ## Complex data structures are not flattened, they're dumped, so don't ## test that here. my @cases = ( "a" => "a", "a\nb\n" => "a\n|b\n", [qw( a b )] => "a|b", [ [qw( a b )], [qw(c d)] ] => "a,b|c,d", [ { a => 0, b => 1 }, { a => 2, c => 3 } ] => "a,b,c|0,1,|2,,3" ); plan tests => @cases / 2; while ( my ( $data, $result ) = splice @cases, 0, 2 ) { is flatten $data, $result, $result; }