On Mon, Mar 19, 2007 at 07:08:58PM -0400, Milan Budimirovic wrote:
> I want to do a systematic search and replace of a word only where the
> word is NOT enclosed in double quotations.
#!/usr/bin/perl -w
while(<>){
# surround quoted strings with unprintables
s/("[^"]+")/\177$1\177/g;
# split on the surrounded strings
@a = split(/\177/);
# loop over parts and avoid quoted pieces
foreach $s ( @a ) {
next if $s =~ /"/;
$s =~ s/foo/bar/g;
}
# re-assemble and print
print join("",@a);
}
--
| Ian! D. Allen - idallen [ at ] idallen [ dot ] ca - Ottawa, Ontario, Canada
| Home Page: http://idallen.com/ Contact Improv: http://contactimprov.ca/
| College professor (Open Source / Linux) via: http://teaching.idallen.com/
| Defend digital freedom: http://eff.org/ and have fun: http://fools.ca/