$pgp = Crypt::OpenPGP->new ( "SecRing" => './pgp/test.private' )or die Crypt::OpenPGP->errstr; my $plaintext = $pgp->decrypt( "Data" => $crypt, "PassphraseCallback" => \&passphrase_cb ); die "decryption failed: ", $pgp->errstr unless $plaintext; print "PLAINTEXT IS $plaintext\n"; sub passphrase_cb { if (my $cert = $_[0]) { printf "Enter passphrase for secret key %s: ", $cert->key_id_hex; } else { print "Enter passphrase: "; } } &passphrase_cb(password); sub passphrase_cb { if (my $cert = $_[0]) { printf "Enter passphrase for secret key %s: ", $cert->key_id_hex; } else { print "Enter passphrase: "; } }