while ($str =~ /($re)/g) { print("$1\n"); } #### use re 'eval'; $str =~ / ($re) (?{ print("$1\n"); }) (?!) /x; #### my $str = 'aabcdabcabce'; my $re = qr/a[^a]*/; #### a abcd abc abce #### a abcd abc ab a abc ab a abce abc ab a