summaryrefslogtreecommitdiff
path: root/ext/B/B.pm
diff options
context:
space:
mode:
authorRobin Houston <robin@cpan.org>2001-04-05 15:27:38 +0100
committerJarkko Hietaniemi <jhi@iki.fi>2001-04-05 18:23:03 +0000
commit002b978b598c42691928a27566ef8edaaeaa8696 (patch)
tree5b979d0e4cac80d0484d840f333bf5e6ff0d8841 /ext/B/B.pm
parent32b4ad3c69185f4ce7cd382edebd968b87bc3e6f (diff)
downloadperl-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.pm21
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