use My::Acme::Clutter qq[( test => 45, foo => 'bar')];
####
use My::Acme::Clutter '`282074657374203d3e2034352c20666f6f203d3e20276261722729';
####
package My::Acme::Clutter;
use 5.006;
sub encrypt {
my $return;
for ( split(//,shift) ) {
$return .= sprintf("%02x",ord($_));
}
return $return;
}
sub decrypt {
my $return;
for ( $_[0] =~ /.{2}/g ) {
$return .= chr( hex $_ );
}
return $return;
}
sub import {
my $pkg = shift;
my $callpkg = (caller)[0];
my $string = shift;
if ($string =~ s/^`//) {
$string = decrypt($string);
}
else {
my $clutter = encrypt($string);
open 0 or print "Can't clutter '$0'\n";
(my $file = join "", <0>) =~
s{^\s*use\s+My::Acme::Clutter.*?;\n}{use My::Acme::Clutter '`$clutter';}m;
open 0, ">$0" or print "Cannot clutter '$0'\n" and exit;
print {0} $file and exit;
}
# turn the string into a hash
my %args = eval $string;
# finally, do the import;
for my $var (keys %args) {
${"${callpkg}::$var"} = $args{$var};
}
}
1;