サブルーチンを宣言する
sub
はサブルーチンを定義します。これは関数ではありません。
BLOCK がなければ、それは単に前方宣言となります。
NAME がなければ、それは無名関数の宣言になりますので、生成されたばかりのクロージャーの CODE ref を返します。
サブルーチンやリファレンスに関しての詳細は perlsub および perlref を参照してください。 また、属性に関しての詳細は attributes および Attribute::Handlers をご覧ください。