package Perl6::Interpolators; use Filter::Simple; use Text::Balanced qw(extract_codeblock); FILTER { my($inside_stuff, $t, $pos); while(($pos=index($_, '$(')) != -1) { $t=substr($_, $pos); $inside_stuff=extract_codeblock($t, '()', qr/\$/); s<\$\Q$inside_stuff\E><\${\\scalar$inside_stuff}>; } ($inside_stuff, $t, $pos)=(undef, undef, undef); while(($pos=index($_, '@(')) != -1) { $t=substr($_, $pos); $inside_stuff=extract_codeblock($t, '()', qr/\@/); s<\@\Q$inside_stuff\E><\@{[$inside_stuff]}>; } };