On 27 July 2014 16:11, Peter Martini <petercmartini@gmail.com> wrote: > On 7/24/14, Rafael Garcia-Suarez <rgs@consttype.org> wrote: >> I believe that this was discussed here some years ago, and that this >> was suggested by TomC. Anyway, I pushed a patch on rgs/nomagicopen. >> The patch is incomplete as it lacks docs and tests. I welcome feedback >> on the intent of the feature. >> >> commit 7f5bb3418c4fc2d6e2523bf918a7d9e33f9a7acc >> Author: Rafael Garcia-Suarez <rgs@consttype.org> >> Date: Thu Jul 24 17:43:29 2014 +0200 >> >> Introduce the double-diamond operator <<>> >> >> This operator works like <> or <ARGV>, as it reads the list of file >> names to open from the command-line arguments. However, it disables >> the magic-open feature (that forks to execute piped commands) : >> >> $ bleadperl -e 'while(<>){print}' 'echo foo |' >> foo >> $ bleadperl -e 'while(<<>>){print}' 'echo foo |' >> Can't open echo foo |: No such file or directory at -e line 1. >> > > I definitely like the idea in some form, though I'll sit out the > feature/syntax discussion for the moment. I want to clarify the > framing of the feature though: > > When you say 'disable magic-open', a more precise description might be > 'Changes ARGV handling to use 3 arg open instead of 2 arg open', > correct? That way its a little more clearly tied to 2 arg / 3 arg > open discussions and makes it easier to spot the edge cases. > > Phrasing it that way makes it a little clearer where the magic comes > from and what other things would be affected; for instance (I can't > test this right now) > > perl -e 'print while(<<>>)' '-' > > would now only work on a file literally named '-'? Yes. However, an empty ARGV would still default to reading STDIN.Thread Previous | Thread Next