subtype 'IO::StringOrFile' => as 'IO::String | IO::File';
だけで動くのかと勝手に思ってたけど、そうでもないようです。
subtype 'IO::String' => as 'Object' => where { $_->isa('IO::String') }; subtype 'IO::File' => as 'Object' => where { $_->isa('IO::File') }; subtype 'IO::StringOrFile' => as 'IO::String | IO::File';