in reply to Re: double underscore in http-header
in thread double underscore in http-header

Exhaustive treatment, many thanks.

I actually consider the default behavior a bug (convenience features that change data should be explicitely turned on, rather than turned off), but of course it's much too late to change that now I suppose.

Replies are listed 'Best First'.
Re^3: double underscore in http-header
by kcott (Archbishop) on Jan 12, 2017 at 22:06 UTC

    I saw kennethk's reply after posting my own. I followed the first link provided and found a much easier fix, without the need for my BEGIN block, at the end of that thread (Re^2: Underscores changed to hyphens by HTTP::Proxy header filter):

    $r->header(':__X_Y__', 1);

    It also mentions why $TRANSLATE_UNDERSCORE has been undocumented, so there's probably little point in requesting a "documentation enhancement" such as I suggested.

    There's no mention of using the colon prefix in the documentation for the header() methods of either HTTP::Request or HTTP::Headers. The latter could probably at least supply a link to the short section, right at the end of its doco, which explains it: "NON-CANONICALIZED FIELD NAMES".

    "... (convenience features that change data should be explicitely turned on, rather than turned off) ..."

    In general, I'd agree with that statement. In this specific case, I'm not so sure: that particular feature is, I suspect, exactly what the vast majority of users want; I've certainly never needed it to work differently. Having said that, I do think such features need to be well documented: in this instance, it probably just needs a short sentence with a L<...> added to the POD.

    Update (fix): Oops! I left out a word which completely changed the intended meaning: s{I'm so sure}{I'm not so sure}.

    — Ken

Re^3: double underscore in http-header
by kennethk (Abbot) on Jan 12, 2017 at 21:25 UTC
    A lot of CGI.pm default behavior is undesirable, but is the way it is because it was a fidelitous implementation of the CGI spec. That's why they stopped shipping it as CORE.

    #11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.