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;