$def1 = "!defined(FLOAT_CODE)"; $def2 = "defined(FIXED_CODE)"; #### m/^(!defined|defined)\((.*?)\)$/; print "$1----$2\n"; #### output case1: !defined----FLOAT_CODE output case2: defined----FIXED_CODE #### m/^(\!|defined)(.*?)$/; print "$1----$2\n"; #### output case1: !----defined(FLOAT_CODE) output case2: defined----(FIXED_CODE)