It took half an hour to patch B::Deparse to mangle names. How long do you think it'd take to re-implement the rest of that expensive suite?
--- /usr/libdata/perl5/i386-openbsd/5.6.1/B/Deparse.pm Thu Oct 3 2
+0:39:48 2002
+++ B/Obfuscate.pm Fri Mar 14 11:56:35 2003
@@ -6,7 +6,7 @@
# This is based on the module of the same name by Malcolm Beattie,
# but essentially none of his code remains.
-package B::Deparse;
+package B::Obfuscate;
use Carp 'cluck', 'croak';
use B qw(class main_root main_start main_cv svref_2object opnumber
OPf_WANT OPf_WANT_VOID OPf_WANT_SCALAR OPf_WANT_LIST
@@ -208,6 +208,13 @@
# \f - flush left (no indent)
# \cK - kill following semicolon, if any
+sub rot13 {
+ my $text = shift;
+ $text =~ tr/a-zA-Z/n-zA-Zm-z/;
+
+ return $text;
+}
+
sub null {
my $op = shift;
return class($op) eq "NULL";
@@ -376,7 +383,7 @@
sub compile {
my(@args) = @_;
return sub {
- my $self = B::Deparse->new(@args);
+ my $self = B::Obfuscate->new(@args);
$self->stash_subs("main");
$self->{'curcv'} = main_cv;
$self->walk_sub(main_cv, main_start);
@@ -784,7 +791,7 @@
if ($name =~ /^\^../) {
$name = "{$name}"; # ${^WARNING_BITS} etc
}
- return $stash . $name;
+ return $stash . rot13($name);
}
# Notice how subs and formats are inserted between statements here
@@ -1872,7 +1879,7 @@
sub padname {
my $self = shift;
my $targ = shift;
- return $self->padname_sv($targ)->PVX;
+ return rot13($self->padname_sv($targ)->PVX);
}
sub padany {
Seeking Green geeks in Minnesota
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.