The Perl Advent Calendar needs more articles for 2022. Submit your idea today!


Perl::Critic::Policy::Catalyst::ProhibitUnreachableCode - Don't write code after an unconditional Catalyst detach.


This module was forked from Perl::Critic::Policy::ControlStructures::ProhibitUnreachableCode version 1.132 and modified to fit.

The primary difference is this module looks for these two Catalyst specific bits of code as signifying a terminating statement:


The redirect_and_detach context method is available if you are using Catalyst::Plugin::RedirectAndDetach.



By default this policy looks for the detach and redirect_and_detach context methods. You can specify additional context methods to look for with the context_methods parameter. In your .perlcriticrc this would look something like:

    context_methods = my_detaching_method my_other_detaching_method

This policy would then consider all of the following lines as terminating statements:



Sometimes controllers have in-house methods which call detach, you can specify those:

    controller_methods = foo bar

Then this policy would look for any package with ::Controller:: in its name and would consider the following lines as terminating statements:


There are no default methods for this parameter.


Please submit bugs and feature requests to the Perl-Critic-Policy-Catalyst-ProhibitUnreachableCode GitHub issue tracker:


Thanks to ZipRecruiter for encouraging their employees to contribute back to the open source ecosystem. Without their dedication to quality software development this distribution would not exist.


    Aran Clary Deltac <>
    Peter Guzis <>


Copyright (C) 2019 Aran Clary Deltac

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see