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

Here's a simple sed-like solution. This is probably not the fastest way, though.

$string = "<<a> a> a <a>\n"; { $string=~s/<([^<]*)>/\U$1/g and redo; } print $string;