perlで例外処理をするモジュールとしてTry::Tinyがあります。

使うときは以下のように定義しますが、これが文法的にどうやって実装されているか確かめたくてモジュールを読んでみましたが、分かりませんでした。

Javaと同じような文法ですが、perlにはtry構文は用意されていません。
Try::Tinyがどうやってこの文法を実装しているの知りたいです。

perldoc Try::Tiny

         try {
           die_sometimes();
         } catch {
           # ...code run in case of error
         } finally {
           if (@_) {
             print "The try block died with: @_\n";
           } else {
             print "The try block ran without error.\n";
           }
         };

以下、モジュールを使わず定義だけしてみて、B::Deparseで構文解析して内部でどう処理されているか確認しましたが、解析結果を見てもよく分かりませんでした。

perl -v: 5.16.2
osx: 10.9.5

$cat ./h.pl 
#!/usr/bin/perl
use strict;
use warnings;

try {
        print "try\n";
} catch {
        print "catch\n";
};

$perl -MO=Deparse ./h.pl 
use warnings;
use strict;
try {
    print "try\n"
} (catch {
    print "catch\n"
} );
./h.pl syntax OK

try()の引数にコードブロックとリストを渡しているのかな?と推察していますが、詳しく分かる方がいらっしゃたら教えてください。

よろしくお願いします。