As mickeyn said, it is a precedence problem. With the hight precedence operator || you need an extra set of parentheses: (my (undef,undef,$uid,$gid) = getpwnam(q[user1])) || die "oh no"; You asked "Should I start using or consistently?" IMO it is a good idea to do everything consistently, or to have a good reason for not doing so.