in reply to I don't remember regex seeming this hard before

An uglier solution, just to be complete:

$k = 0; $string=~s@(?:<(?{++$k})|>(?{--$k}))*([^<>]*)@$k?uc($1):$1@ge;

Replies are listed 'Best First'.
Re^2: I don't remember regex seeming this hard before
by Roy Johnson (Monsignor) on Jun 15, 2004 at 16:30 UTC
    Or, to be (arguably) less ugly and do a little less work,
    s/([<>]+[^<>]+)/($k+=($1=~y#<##)-($1=~y#>##)) ? uc $1 : $1/ge;

    We're not really tightening our belts, it just feels that way because we're getting fatter.