The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w

package FlashTestApp;
use Catalyst qw/Session Session::Store::Dummy Session::State::Cookie/;

use strict;
use warnings;
no warnings 'uninitialized';

sub default : Private {
    my ($self, $c) = @_;
    $c->session;
}

    
sub first : Global {
    my ( $self, $c ) = @_;
    if ( ! $c->flash->{is_set}) {
        $c->stash->{message} = "flash is not set";
        $c->flash->{is_set} = 1;
    }
}

sub second : Global {
    my ( $self, $c ) = @_;
    if ($c->flash->{is_set} == 1){
        $c->stash->{message} = "flash set first time";
        $c->flash->{is_set}++;
    }
}

sub third : Global {
    my ( $self, $c ) = @_;
    if ($c->flash->{is_set} == 2) {
        $c->stash->{message} = "flash set second time";
        $c->keep_flash("is_set");
    }
}

sub fourth : Global {
    my ( $self, $c ) = @_;
    if ($c->flash->{is_set} == 2) {
        $c->stash->{message} = "flash set 3rd time, same val as prev."
    }
}

sub fifth : Global {
    my ( $self, $c ) = @_;
    $c->forward('/first');
}

sub end : Private {
    my ($self, $c) = @_;
    $c->res->output($c->stash->{message});
}


__PACKAGE__->setup;

__PACKAGE__;