-----Original Message----- From: John W. Krahn [mailto:[EMAIL PROTECTED] Sent: Thursday, April 06, 2006 8:04 PM To: Perl Beginners Subject: Re: Crypt::GPG produces an empty cleartext file
RICHARD FERNANDEZ wrote: > Hi Folks, Hello, > I have a job that takes in an encrypted file and decrypts it using > Crypt::GPG. > > <code> > for my $encrypted_file (@files) { > > open(CIPHERTXT, $encrypted_file) or croak "Can't open > encrypted_file: $encrypted_file\n"; You should include the $! (or perhaps the $^E) variable in your error message so you will know why it croaked. You probably need to binmode() the filehandle. perldoc -f binmode > my @ciphertxt = <CIPHERTXT>; > > my($cleartxt, $signature) = $gpg -> decrypt([EMAIL PROTECTED]); > > # File names must have a ".extension" on them if they're > encrypted > # we will strip off the last "dot" and everything after it to > name the > # clear text file > my $filename = (split /\.\w+$/, $encrypted_file)[0]; You probably want to use substitution in instead of split. ( my $filename = $encrypted_file ) =~ s/\.\w+$//; > open(CLEARTXT, ">", "$filename") or croak "Can't write to perldoc -q quoting > $filename: $!\n"; > print CLEARTXT $cleartxt or croak "Can't print cleartext: > $!\n"; > close CLEARTXT or croak "Can't close <CLEARTXT>?\n"; > > push @processed_files, $filename or croak "Can't create list of perldoc -f push push ARRAY,LIST Treats ARRAY as a stack, and pushes the values of LIST onto the end of ARRAY. The length of ARRAY increases by the length of LIST. Has the same effect as for $value (LIST) { $ARRAY[++$#ARRAY] = $value; } but is more efficient. Returns the new number of elements in the array. The only way that your expression will croak is if @processed_files is empty and you push an empty list on to it. $ perl -le' push @x, $y or die "Push error" ' $ perl -le' push @x, () or die "Push error" ' Push error at -e line 1. In other words, your expreesion will *never* croak. > decrypted files!\n"; > } > </code> > > Mostly, this works as I expect, but once in a blue moon we get a > ciphertext that produces a 0 byte cleartext file when run > through the above code. When I decrypt the file manually (gpg --decrypt > <filename> > clear.txt ) I get a good (readable) cleartext file. You probably need to use binmode on your filehandles. John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response> *********************************************************************** Was this ever resolved? Thank you Derek Derek Bellner Smith Unix Systems Engineer Cardinal Health Dublin, Ohio 614-757-5000 Main 614-757-8075 Direct 614-652-4336 Fax [EMAIL PROTECTED] Working together. For life.(sm) _________________________________________________ This message is for the designated recipient only and may contain privileged, proprietary, or otherwise private information. If you have received it in error, please notify the sender immediately and delete the original. Any other use of the email by you is prohibited. Dansk - Deutsch - Espanol - Francais - Italiano - Japanese - Nederlands - Norsk - Portuguese - Svenska: www.cardinalhealth.com/legal/email -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>