in reply to Parsing XML...by hand (ugh)
while (1) { /\G<([^>]+)>/gc and do { start_tag($1); next; } /\G</([^>]+)>/gc and do { end_tag($1); next; } /\G([^<]*)/gc and do { body($1); next; } last; } [download]