use re 'eval'; $str =~ / ($re) (?{ print("$1\n"); }) (?!) /x;