diff options
author | Robin Houston <robin@cpan.org> | 2001-04-05 15:27:38 +0100 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2001-04-05 18:23:03 +0000 |
commit | 002b978b598c42691928a27566ef8edaaeaa8696 (patch) | |
tree | 5b979d0e4cac80d0484d840f333bf5e6ff0d8841 /ext/B/B.pm | |
parent | 32b4ad3c69185f4ce7cd382edebd968b87bc3e6f (diff) | |
download | perl-002b978b598c42691928a27566ef8edaaeaa8696.tar.gz |
print control-character vars readably
Message-ID: <20010405142738.A15855@puffinry.freeserve.co.uk>
Needs EBCDICification.
p4raw-id: //depot/perl@9564
Diffstat (limited to 'ext/B/B.pm')
-rw-r--r-- | ext/B/B.pm | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/ext/B/B.pm b/ext/B/B.pm index ad8699f803..6c2f013da6 100644 --- a/ext/B/B.pm +++ b/ext/B/B.pm @@ -60,6 +60,12 @@ use strict; package B::OBJECT; } +sub B::GV::SAFENAME { + my $name = (shift())->NAME; + $name =~ s/^([\cA-\cZ])/"^".chr(64 + ord($1))/e; + return $name; +} + my $debug; my $op_count = 0; my @parents = (); @@ -449,6 +455,21 @@ This method returns TRUE if the GP field of the GV is NULL. =item NAME +=item SAFENAME + +This method returns the name of the glob, but if the first +character of the name is a control character, then it converts +it to ^X first, so that *^G would return "^G" rather than "\cG". + +It's useful if you want to print out the name of a variable. +If you restrict yourself to globs which exist at compile-time +then the result ought to be unambiguous, because code like +C<${"^G"} = 1> is compiled as two ops - a constant string and +a dereference (rv2gv) - so that the glob is created at runtime. + +If you're working with globs at runtime, and need to disambiguate +*^G from *{"^G"}, then you should use the raw NAME method. + =item STASH =item SV |