in reply to return codes from embedded subroutines

my apologies on not being clearer. You would be correct in what you are thinking. Lemme kinda give a flow here:
1. hash is created 2. passed to statinfo subroutine 3. passed to encrypt or decrypt subroutine from statinfo a. eval is run over gpg encryption/decryption 4. file(s) are moved to where they need to be 5. email is sent (proggie done)
Here is a few snippets from the program:
my(%temphash) = %workhash; if (%workhash = &statinfo(%temphash) != 0) { print "ERR -> statinfo sub\n"; exit; } sub statinfo { # bunch of stuff here - actually gathering of information # from stat function my(%temphash) = %workhash; if ( $workhash{abbr} =~ /lmr/lamer/ ) { %workhash = &ezip(%temphash); } elsif ( ($workhash{encrypt} eq "pgp") && ($workhash{tranmeth} eq "put +") ) { %workhash = &encrypt(%temphash); } elsif ( ($workhash{encrypt} eq "pgp") && ($workhash{tranmeth} eq "get +") ) { %workhash = &decrypt(%temphash); } else { print "ERR! - dont know what to do!\n"; exit(1); } }
Now, inside any of THOSE subs (ones directly above), an eval{} runs on the process to make sure it went alright.. im starting to think im a complete idiot here and not sure where to go from this point... did this help any? I hope someone can give this partial newbie a hand.. thanks