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

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.