У меня есть класс, и я хочу связать вызовы его методов в строгом порядке, но не могу понять, как это сделать.
# Mail.pm
package Mail;
sub new { ... }
sub inbox { ... }
sub folder { ... }
sub count { ... }
1;
и позже ...
use Mail;
my $mail = Mail->new;
# ok
$mail->inbox->count;
$mail->folder('Spam')->count;
# prevent calling inbox() after folder() or vice versa
$mail->inbox->folder('Spam')->count;
$mail->folder('Spam')->inbox->count;