As you are saying, normally executing programs return
0
to signify a normal exit. The Perl expression
EXPR1 or EXPR2 evaluates
EXPR2
only if
EXPR1 is false.
0 is
false....
So, what you see happening is exactly what should be happening.
I guess you are using or die on system *calls*
(like open or unlink), but
system is not a system call.
-- Abigail