Search code examples
perlmojoliciousstrawberry-perl

How to store an array in session in Perl


I am using Mojolicious Perl framework in my application. I want to store an array in session, but is not successful.

my @returnResult;
$returnResult['fn'] = $decoded->{'fn'};
$returnResult['ln'] = $decoded->{'ln'};
$self->session(returnResult => @returnResult);

Please help.


Solution

  • See hashes in Modern Perl and perldata.

    my %return_result;
    $returnResult{fn} = $decoded->{fn};
    $returnResult{ln} = $decoded->{ln};
    

    or

    my %return_result = (
        fn => $decoded->{fn},
        ln => $decoded->{ln},
    );
    

    or simply

    # http://perldoc.perl.org/perl5200delta.html#New-slice-syntax
    my %return_result = %$decoded{qw(fn ln)};
    

    You do not get automatic references like in other languages. Use the \ operator.

    $self->session(returnResult => \%return_result);