my @arr = ( if(1<2){'1'}else{()} ); #syntax error my $arrref = \( if(1<2){'1'}else{()} ); #syntax error my $arrref2 = [ 1<2 ? '1' : () ]; #works my @arr2 = ( do { if(1<2){'1'}else{()} } ); #works if(1<2){print '1',$/ }else{print '2',$/}; #works 1<2 ? print '1',$/ : print '2',$/; #works ( 1<2 ? print '1',$/ : print '2',$/ ); #works ( if(1<2){print '1',$/ }else{print '2',$/} ); #syntax error