[EMAIL PROTECTED] wrote: > Hi > > I am trying to regex a make output line (g++) and don't get it together. > What I want is: > > All lines where the -c option does not occure, neither before nor after the > -o option and then extract the portion after the -o option. > > $regexApplication = '(?<![ \t]-c[ \t])-o[ > \t]+((/?([\w\.]+/)*)?([\w]+(\.[\w]+)?))[ \t]+(?!.*[ \t]-c[ \t])'; > > $refStrAppl = \$1; > > elsif( $inputLine =~ m/$regexApplication/ ) > { > push( @applications, $$refStrAppl ); > } > > How do I build a regex that checks for inexitstance of a certain pattern, in > my case [ \t]-c[ \t] and existance of another pattern, my case -o[ > \t]+((/?([\w\.]+/)*)?([\w]+(\.[\w]+)?))[ \t]+ ? (last q-mark is not regex) > > Or do I have to split it? I am close to do it that way. Not nice, but simpler. > > Appreciate any help
If you mean by 'split it' that you could do separate tests in separate statements then I think there's nothing 'not nice' about it. If you're determined to use regexes then I would say that was the way to go: first check whether the -c option is present, and if not look for the -o option and value. You should also consider using the Getopt::Std standard module (or Getopt::Long if that isn't comprehensive enough for you). HTH, Rob -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/