LexAlias(3)

πŸ¦‹ LexAlias(3) πŸ¦‹

okay so this is the User Contributed Perl Documentation page for Devel::LexAlias, and it's a whole vibe: it aliases lexical variables. buckle up, bestie 🫢

πŸ’– NAME πŸ’–

Devel::LexAlias β€” alias lexical variables. periodt.

✨ SYNOPSIS ✨

use Devel::LexAlias qw(lexalias);

sub steal_my_x {
    my $foo = 1;
    lexalias(1, '$x', \$foo);
}

sub foo {
    my $x = 22;
    print $x; # prints 22

    steal_my_x;
    print $x; # prints 1
}

πŸ’… DESCRIPTION πŸ’…

Devel::LexAlias provides the ability to alias a lexical variable in a subroutine's scope to one of your choosing.

If you don't know why you'd want to do this, I'd suggest that you skip this module. If you think you have a use for it, I'd insist on it. 😭

Still here? iconic.

🫢 lexalias( $where, $name, $variable )

  • $where β€” refers to the subroutine in which to alias the lexical, it can be a coderef or a call level such that you'd give to caller
  • $name β€” is the name of the lexical within that subroutine
  • $variable β€” is a reference to the variable to install at that location

πŸ’€ BUGS πŸ’€

lexalias delves into the internals of the interpreter to perform its actions and is so very sensitive to bad data, which will likely result in flaming death, or a core dump. Consider this a warning. πŸ”₯πŸ’€

There is no checking that you are attaching a suitable variable back into the pad as implied by the name of the variable, so it is possible to do the following:

lexalias( $sub, '$foo', [qw(an array)] );

The behaviour of this is untested, I imagine badness is very close on the horizon though. πŸ™ˆ

πŸ‘€ SEE ALSO πŸ‘€

  • peek_sub from PadWalker
  • Devel::Peek

πŸ‘‘ AUTHOR πŸ‘‘

Richard Clamp <richardc@unixbeard.net> with close reference to PadWalker by Robin Houston

Copyright (c) 2002, 2013, Richard Clamp. All Rights Reserved. This module is free software. It may be used, redistributed and/or modified under the same terms as Perl itself.


and that's the whole page, bestie: manual page LexAlias(3), from perl v5.40.0, dated 2023-03-13, and yes it's the User Contributed Perl Documentation flavor. mwah πŸ’‹βœ¨

πŸ“¦ where this page comes from