mellin has asked for the wisdom of the Perl Monks concerning the following question:

I have a line of code that would need to call sub as well to return a value. So far the line only runs the sub but for some reason discards the return value. Perhaps a lot easier to explain with the actual code..

call the sub:
# give the sub two parameters, $saveOk gets then the subs return value my $saveOk = saveFile($frontPage, $xmlPrint); # printing the scalar below should now either give 1 or nothing # depending wether the file got saved or not print "$saveOk\n"; sub saveFile { open FH, ">$_[0]" or error($!, "not able to write to file $_[0]") and +return undef; flock FH, 2; # take exclusive-lock print FH "$_[1]"; # print to file-handle close FH; # if everything went fine, give 1 as an return value 1; }
That "and return undef" does not seem to work, it still tries to flock and print to it, even though it should get out of the sub and return undef value if the file could not be opened. How exactly should i get the sub to abort and return undef without using exit?