Perl Diver 2.31
Main Environment Variables Perl Default Values Perl Config - Summary Perl Config - Full Installed Modules List Directory uptime Docs

Module Documentation
Details and documentation about a specific module, including version and documentation (if available). Note that while links to perldoc.com and search.cpan.org are provided, the module may be part of a larger distribution. If you reach a File Not Found page on either site, please try the parent module.

B::Showlex

Name B::Showlex
Version 1.05
Located at /usr/lib64/perl5
File /usr/lib64/perl5/B/Showlex.pm
Is Core Yes
Search CPAN for this module B::Showlex
Documentation B::Showlex
Module Details B::Showlex

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.


SEE ALSO

the B::Showlex manpage can also be used outside of the O framework, as in the third example. See the B::Concise manpage 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

Perl Diver brought to you by ScriptSolutions.com © 1997- 2024