tokuhirom's blog.

'; DROP DATABASE database();

Sledge::Plugin::Forward404

試案。

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);
  }