package MyApp::Xslate::Bridge;
use strict;
use parent qw( Text::Xslate::Bridge );
use Text::Xslate qw( html_builder );
use Text::Markdown ();
    
__PACKAGE__->bridge(
    function => {
        markdown => html_builder { Text::Markdown::markdown(@_) }
    }
);  
        
1;       
呼び出す側はこう
use Text::Xslate;
my $xslate = Text::Xlate->new(
    ....,
    module => [ 'MyApp::Xslate::Bridge' ]
);
$xslate->render( ... );


おいおい、Text::Xslate素敵すぎるだろ。

今日Markdownを使いたいと思ってちょっと考えたら、これだけで終了した:
use strict;
use Text::Xslate;
my $xslate = Text::Xslate->new(
     ....
     module => [
          'Text::Markdown' => [ 'markdown' ]
     ]
);
print $xslate->render_string( <<EOT, { text => $some_markdown_text });
     [% text | markdown | mark_raw %]
EOT
素敵!gfx 先生になら抱かれてもいい。

俺もXSできる人間の端くれとしてxslateの中身をちゃんと把握しよう・・・