#!/usr/bin/perl use strict; use warnings; my($bad)='/this/path/does/not/exist'; die "$bad exists, but must not\n" if -f $bad; my($yes1)=(defined $bad and -f $bad); #2nd parens seem unnecessary, die "yes1=$yes1\n" if $yes1; #but does not die here; good my($yes2)=defined $bad and -f $bad; #2nd parens removed, die "yes2=$yes2\n" if $yes2; #but dies here; why?