I would change:
# Encrypt file.
my $gpg_command = `gpg --trust-model always -er 12345678 my_file.txt`;
print defined($gpg_command) ? $gpg_command : "Command failed\n";
# Capture STDOUT and save it to a file.
open(READ, "$gpg_command 2>&1 |") or die "Failure on open $!\n";
open( my $out, ">", "encrypted.pgp" ) or die "Could not open file for
+ encrypted data - $!";
to:
# Build encryption command
my $gpg_command = "gpg --trust-model always -er 12345678 my_file.txt";
# Execute command and capture STDOUT.
my $gpg_results = `$gpg_command`;
print defined($gpg_results) ? $gpg_results : "Command failed\n";
# Save captured STDOUT to a file.
open( my $out, ">", "encrypted.pgp" ) or die "Could not open file for
+encrypted data - $!";
Then:
- Correct any errant assumptions about what happens when the command fails;
- Adjust what you're writing to the output file to reflect what you actually want there.