in reply to &process or die

Your sub process returns 0 (or another false value), so the "or die" is executed.

Replies are listed 'Best First'.
Re^2: &process or die
by steph_bow (Pilgrim) on Apr 18, 2008 at 12:56 UTC

    Thanks moritz

    Now I understand, because my subroutine does NOT return a number. It makes mathematical operations on files and prints results but there is NOT a return so it is normal "die" is executed !

      my subroutine does NOT return a number.
      That is not true, according to the documentation for return, and as others in this thread have already pointed out:
      (Note that in the absence of an explicit "return", a subroutine, eval, or do FILE will automatically return the value of the last expression evaluated.)
      This is why moritz correctly pointed out that your sub is indeed returning a value, and it even might be numeric (0).

      Consider the following contrived example:

      #!/usr/bin/env perl use warnings; use strict; my $result; $result = foo(); print "result=$result\n"; $result = bar(); print "result=$result\n"; sub foo {print "foo: "} sub bar {print "bar: "; chdir '/nodir'}

      This prints:

      foo: result=1 bar: result=0

      sub "foo" returns the result of the successful print command, and sub "bar" returns the result of the unsuccessful chdir command.