The shift function removes and returns the first argument from @_ (since
there's no array passed for it to shift from) in a sub. It's used this way
because the first argument to these subs is the invocant/object. You can
replace it with $_[0] to get the first argument without removing it. You
should not use $self from outside unless necessary because that may create
a circular reference and leak memory.

-Dan

On Sat, Nov 24, 2018 at 3:40 PM john <[email protected]> wrote:

> This probably a perl question so if I should ask elsewhere let me know...
>
> In looking at the Mojo::Pg blog example and in recent addition of db
> method to Mojo::Pg::PubSub I see use of shift->.
>
>
>  From Mojo::Pg::PubSub documentation:
>
> # Reconnect immediately
> $pubsub->unsubscribe('disconnect')->on(disconnect => sub { shift->db });
>
> Or from the blog example:
>
> $self->helper(pg => sub { state $pg = Mojo::Pg->new(shift->config('pg'))
> });
>
> This doesn't work in my code and I replace "shift" with "$self".   That
> appears to be working.   Also, I can't reconcile using shift in this way
> and what the perl documentation says about it but could get over this if
> it worked.
>
> What am I missing here?
>
> Thanks,
>
> John
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Mojolicious" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/mojolicious.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Mojolicious" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.

Reply via email to