http://www.perlmonks.org?node_id=720979


in reply to Re^2: Insane (?) Regexp-based jpeg (JFIF) extractor...
in thread Insane (?) Regexp-based jpeg (JFIF) extractor...

By the way, I found open doesn't work on open(my $fh, '-') either.

Replies are listed 'Best First'.
Re^4: Insane (?) Regexp-based jpeg (JFIF) extractor...
by blazar (Canon) on Nov 05, 2008 at 13:08 UTC

    I personally believe this is too bad. In principle it's such a wonderful pragma! Perhaps you should file a bug report. As far as open not affecting *ARGV is concerned, I would still consider that a bug too, since the documentation clearly says:

    The open pragma serves as one of the interfaces to declare default "layers" (also known as "disciplines") for all I/O.

    (Additional emphasis is mine.)

    OTOH, it also says:

    Any two-argument open(), readpipe() (aka qx//) and similar operators found within the lexical scope of this pragma will use the declared defaults. Even three-argument opens may be affected by this pragma when they don't specify IO layers in MODE.

    (Additional emphasis is mine.)

    Here, it is to be noticed that:

    • it talks of "two-argument open(), readpipe() (aka qx//) and similar operators found [...]" which may be interpreted to exclude implicit "versions" of the same functions/operators;
    • that emphasized "may" is at most ambiguous and I would like to know which is the actual behaviour.

    As far as the second point is concerned, I also think that it would be more reasonable to have three-argument opens always alway affected by the pragma, since it just "declares default "layers" for all I/O" and IMHO if they specify IO layers in MODE, then the latter ones should be simply stacked over the default ones.

    --
    If you can't understand the incipit, then please check the IPB Campaign.