Thanks for your reply, which confirms a nagging suspicion: (this is really a problem with Windows and STDIN, not perl or Vim).
You have to provide a range either at the colon prompt, by visual selection, or by motion selection.
Understood, the method used to provide the range (visual selection in the instant case) was intentionally edited out of the original post for simplicity sake. Moreover, that does not seem to be at issue since the 'sort' (binary) variant worked as expected, while the 'myfilter.pl' variant did not work (all other things held constant) ceteris paribus. If the range were not properly specified, both variants should have failed.
your node mentions Windows, and I don't have any form of vi on any of my Windows machines at the moment.
Windows appears to be the culprit here. There were some problems on Linux but those were traced to script permissions. Moreover, none of the other suggestions in this thread (so far) have worked on Windows ... all produce blank output where the stuff from STDIN should be ... the test tags appear, but not the 'filtered' text.