If you *really* want to hide your variables (or rather, your
values), you might want to check out
Tie::EncryptedHash.
It's a tied hash with encrypted values, using a standard
symmetric cipher (eg. Blowfish).
Sample usage (from the SYNOPSIS):
use Tie::EncryptedHash;
tie my %s, Tie::EncryptedHash, 'passwd';
$s{foo} = "plaintext"; # Normal field, stored in plaintext.
print $s{foo}; # (plaintext)
$s{_bar} = "signature"; # Fieldnames that begin in single
# underscore are encrypted.
print $s{_bar}; # (signature) Though, while the passw
+ord
# is set, they behave like normal fiel
+ds.
delete $s{__password}; # Delete password to disable access
# to encrypting fields.
print $s{_bar}; # (Blowfish NuRVFIr8UCAJu5AWY0w...)
$s{__password} = 'passwd'; # Restore password to gain access.
print $s{_bar}; # (signature)
$s{_baz}{a}{b} = 42; # Refs are fine, we encrypt them too.