#! perl -slw use strict; while( ) { print "$1 : ", $2||$3 while m[ (\w+) ## the name \s+=\s+ ## the = (?: ## Either ' ( [^']+ ) ' ## all the non-quotes between quotes | ## or (.*?) ## the minimum ) \s{2,} ## absorb the two or more spaces ]gx; } =results P:\test>junk drsubc : agauss(0, 1, 3) delm1 : 0 + 0.045u*distm1 delm2 : 0 + 0.07u*distm2 delm3 : 0 + 0.07u*distm3 delm4 : 0 + 0.07u*distm4 delmt : 0 + 0.07u*distmt delml : 0.16u + 0.43u*distml delam : 0.32u + 0.86u*distam dele1 : 0 + 0.25u*diste1 dele2 : 0 + 0.25u*diste2 delma : 0.16u + 0.6u*distma pmsxt : npmsxt + 12.5u*dpmsxt tih : 0.35u capct : 0.50u + 0.13u*xdcapct capcti : 0.55u + 0.13u*xdcapct m1t : 0.41u + 0.05u*xdm1t m1ti : 0.36u + 0.05u*xdm1t m2t : 0.48u + 0.057u*dm2t m3t : 0.48u + 0.057u*dm3t m4t : 0.48u + 0.057u*dm4t mtt : 0.48u + 0.057u*dmtt qtt : 0.242u + 0.0202u*dqtt htt : 0.242u + 0.0202u*dhtt mlt : 2.0u + 0.2u*dmlt amt : 4.0u + 0.4u*damt e1t : 3.0u + 0.5u*de1t e2t : 4.0u + 0.5u*xde1mat mat : 4.0u + 0.4u*dmat m1m2t : 0.35u + 0.05u*dm1m2t =cut __DATA__ drsubc = agauss(0, 1, 3) delm1 = '0 + 0.045u*distm1' delm2 = '0 + 0.07u*distm2' delm3 = '0 + 0.07u*distm3' delm4 = '0 + 0.07u*distm4' delmt = '0 + 0.07u*distmt' delml = '0.16u + 0.43u*distml' delam = '0.32u + 0.86u*distam' dele1 = '0 + 0.25u*diste1' dele2 = '0 + 0.25u*diste2' delma = '0.16u + 0.6u*distma' pmsxt = 'npmsxt + 12.5u*dpmsxt' tih = 0.35u capct = '0.50u + 0.13u*xdcapct' capcti = '0.55u + 0.13u*xdcapct' m1t = '0.41u + 0.05u*xdm1t' m1ti = '0.36u + 0.05u*xdm1t' m2t = '0.48u + 0.057u*dm2t' m3t = '0.48u + 0.057u*dm3t' m4t = '0.48u + 0.057u*dm4t' mtt = '0.48u + 0.057u*dmtt' qtt = '0.242u + 0.0202u*dqtt' htt = '0.242u + 0.0202u*dhtt' mlt = '2.0u + 0.2u*dmlt' amt = '4.0u + 0.4u*damt' e1t = '3.0u + 0.5u*de1t' e2t = '4.0u + 0.5u*xde1mat' mat = '4.0u + 0.4u*dmat' m1m2t = '0.35u + 0.05u*dm1m2t'