in reply to Diamond errors

That's how sed behaves, too, and many other tools.

If you want to handle missing files, don't use the diamond, use open or something like

BEGIN { -f or die "No file $_" for @ARGV }

BTW, $! only contains a meaningful value right after something went wrong. If you print it after processing an existing file, its value might be totally irrelevant (I'm getting Inappropriate ioctl for device).

map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]