sub func { return (0, 1, 2) } if (1 and do { ($result) = func($param); $result }) { print "1\n"; } else { print "0\n"; } if (1 and ($result) = func($param)) { print "1\n"; } else { print "0\n"; } #### 0 1 #### ($result) = func($param) #### if (... and do { ($result) = func($param); 3 }) #### if (... and do { ($result) = func($param); $result }) #### if (... and $result = (func($param))[0])