I created a Vim command which will invoke perl6 as a filter, analogous to
:perldo, though of course it isn't as powerful as
:perldo. (Being an external command rather than an internal interpreter, there is no access to Vim's API and no memory of previous state.)
The command is defined as:
command! -nargs=1 -range=% Perl6do exec "<line1>,<line2>!perl6 -pe " . shellescape(<q-args>, 1)
It seems to work, but when I make a typo, the error output is inserted into the buffer. How do I make the filter abort if the external command gives an error? Do I need to make a helper function which emulates the "!" behavior and does its own error checking?