Go to main content

man pages section 3: Library Interfaces and Headers

Exit Print View

Updated: Wednesday, July 27, 2022
 
 

B::Showlex (3)

Name

B::Showlex - Show lexical variables used in functions or files

Synopsis

perl -MO=Showlex[,-OPTIONS][,SUBROUTINE] foo.pl

Description

Perl Programmers Reference Guide                                 B::Showlex(3)



NAME
       B::Showlex - Show lexical variables used in functions or files

SYNOPSIS
               perl -MO=Showlex[,-OPTIONS][,SUBROUTINE] foo.pl

DESCRIPTION
       When a comma-separated list of subroutine names is given as options,
       Showlex prints the lexical variables used in those subroutines.
       Otherwise, it prints the file-scope lexicals in the file.

EXAMPLES
       Traditional form:

        $ perl -MO=Showlex -e 'my ($i,$j,$k)=(1,"foo")'
        Pad of lexical names for comppadlist has 4 entries
        0: (0x8caea4) undef
        1: (0x9db0fb0) $i
        2: (0x9db0f38) $j
        3: (0x9db0f50) $k
        Pad of lexical values for comppadlist has 5 entries
        0: SPECIAL #1 &PL_sv_undef
        1: NULL (0x9da4234)
        2: NULL (0x9db0f2c)
        3: NULL (0x9db0f44)
        4: NULL (0x9da4264)
        -e syntax OK

       New-style form:

        $ perl -MO=Showlex,-newlex -e 'my ($i,$j,$k)=(1,"foo")'
        main Pad has 4 entries
        0: (0x8caea4) undef
        1: (0xa0c4fb8) "$i" = NULL (0xa0b8234)
        2: (0xa0c4f40) "$j" = NULL (0xa0c4f34)
        3: (0xa0c4f58) "$k" = NULL (0xa0c4f4c)
        -e syntax OK

       New form, no specials, outside O framework:

        $ perl -MB::Showlex -e \
           'my ($i,$j,$k)=(1,"foo"); B::Showlex::compile(-newlex,-nosp)->()'
        main Pad has 4 entries
        1: (0x998ffb0) "$i" = IV (0x9983234) 1
        2: (0x998ff68) "$j" = PV (0x998ff5c) "foo"
        3: (0x998ff80) "$k" = NULL (0x998ff74)

       Note that this example shows the values of the lexicals, whereas the
       other examples did not (as they're compile-time only).

   OPTIONS
       The "-newlex" option produces a more readable "name => value" format,
       and is shown in the second example above.

       The "-nosp" option eliminates reporting of SPECIALs, such as "0:
       SPECIAL #1 &PL_sv_undef" above.  Reporting of SPECIALs can sometimes
       overwhelm your declared lexicals.


ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       +---------------+-----------------------+
       |ATTRIBUTE TYPE |   ATTRIBUTE VALUE     |
       +---------------+-----------------------+
       |Availability   | runtime/perl-532      |
       +---------------+-----------------------+
       |Stability      | Pass-through volatile |
       +---------------+-----------------------+

SEE ALSO
       B::Showlex can also be used outside of the O framework, as in the third
       example.  See B::Concise for a fuller explanation of reasons.

TODO
       Some of the reported info, such as hex addresses, is not particularly
       valuable.  Other information would be more useful for the typical
       programmer, such as line-numbers, pad-slot reuses, etc..  Given this,
       -newlex is not a particularly good flag-name.

AUTHOR
       Malcolm Beattie, "mbeattie@sable.ox.ac.uk"



NOTES
       Source code for open source software components in Oracle Solaris can
       be found at https://www.oracle.com/downloads/opensource/solaris-source-
       code-downloads.html.

       This software was built from source available at
       https://github.com/oracle/solaris-userland.  The original community
       source was downloaded from
       http://www.cpan.org/src/5.0/perl-5.32.0.tar.gz.

       Further information about this software can be found on the open source
       community website at https://www.perl.org/.



perl v5.32.0                      2020-06-14                     B::Showlex(3)