#!/usr/bin/perl -w { local $/ = undef; # slurp. $_ = <>; } $nb = qr/[^\}]*/; # non-close-bracket $nq = qr/[^\"]*/; # non-quote while( m/^Tag+ \s+ \{ $nb \n\s+ Name \s+ \" ($nq \s $nq) \" $nb \} /msx ) { substr( $_, $-[1], $+[1]-$-[1] ) =~ s/ /_/g; } print;