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: SPECIAL #1 &PL_sv_undef
1: PVNV (0x9db0fb0) $i
2: PVNV (0x9db0f38) $j
3: PVNV (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: SPECIAL #1 &PL_sv_undef
1: PVNV (0xa0c4fb8) "$i" = NULL (0xa0b8234)
2: PVNV (0xa0c4f40) "$j" = NULL (0xa0c4f34)
3: PVNV (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: PVNV (0x998ffb0) "$i" = IV (0x9983234) 1
2: PVNV (0x998ff68) "$j" = PV (0x998ff5c) "foo"
3: PVNV (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¶
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"