試案。
package Sledge::Plugin::Forward404;
use strict;
use warnings;
sub import {
my $pkg = caller(0);
no strict 'refs';
*{"$pkg\::forward_404"} = sub {
my $self = shift;
unless (@_) {
unless ($self->finished) {
$self->r->status(404);
$self->send_http_header;
$self->finished(1);
}
}
};
}
__END__
=head1 SYNOPSIS
package Your::Pages;
use Sledge::Plugin::Forward404Unless;
sub dispatch_foo {
my $self = shift;
my $blogger = Your::Data::Blogger->retrieve($self->r->param('blogger_id'));
return $self->forward_404 unless $blogger;
$self->tmpl->param(blogger => $blogger);
}