Carp
&Carp::carp
とか&Carp::croak
なんて、エラーチェックに必要だけど、実際にエラーが起きない限りは必要ないわけで。それなのに必ずモジュールを読み込むのもアレなので、必要に応じてロードするようにしました。
package Tangerine::Core::Carp; use strict; use warnings; use version; our $VERSION = qv('0.0.1'); use base qw/Exporter/; our @EXPORT_OK = qw/carp croak/; sub carp { require Carp; goto &Carp::carp; } sub croak { require Carp; goto &Carp::croak; } 1;
goto
はこういうときに使うものだよね。実際にcarp
やcroak
が呼ばれない限り、Carpモジュールはロードしません。