in reply to Re: &process or die
in thread &process or die

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 !

Replies are listed 'Best First'.
Re^3: &process or die
by toolic (Bishop) on Apr 18, 2008 at 16:42 UTC
    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.