in reply to Matching delimiters
Alternatively, since 5.10 came out today, you can use scary regex features:
s/\\caption(\{((?:[^\{\}]|(?1))*)\})/<caption>$2<\/caption>/; [download]