in reply to Why is "odd number of elements in hash assignment" warning and not error?

The points you raise are quite valid. Whether something should be fatal or not is sometimes a matter of taste - there's the "thanks for the warning but I know what I'm doing" crowd, and there's the "we should help people with their likely mistakes" crowd - so arguments about it are bound to be endless :-) Especially in this case, where an odd number of elements in a hash assignment is not a situation that Perl cannot recover from and is therefore not strictly fatal. Instead, this is more of a "the programmer likely made a mistake, but then again we don't know for 100% certain" (Perl tends to be permissive with these kinds of things), which is probably why it's a nonfatal warning. Or, looking at it from yet another angle: at least people are getting a warning in the first place, and then the user has control over their preferred level of strictness.

why "misc" category and not, say, "hash"/"odd"?!?!

That is an excellent point and worthy of a patch or at least feature request to P5P.

  • Comment on Re: Why is "odd number of elements in hash assignment" warning and not error?

Replies are listed 'Best First'.
Re^2: Why is "odd number of elements in hash assignment" warning and not error?
by LanX (Saint) on Feb 18, 2015 at 18:13 UTC
    > at least people are getting a warning in the first place,

    yep, as a side note:

    "devision by 0" is a "silent Not_a_Number" in some languages like JS

    I.e. not a fatal stop of execution!

    Not any exception which could be activated or caught!

    Just returning "NaN" from calculation.

    > there's the "thanks for the warning but I know what I'm doing" crowd,

    And we had recently a discussion about people complaining that undefined values raise far too many warnings. ;-)

    > > why "misc" category and not, say, "hash"/"odd"?!?!

    > That is an excellent point

    most likely the set of warnings was expanded gradually over time...

    update

    > worthy of a patch or at least feature request to P5P.

    well I'm more concerned that obvious compile time errors aren't reported

    perl -we 'sub tst {%h=\%h}'

    (reusing %h to silence "only used one")

    Cheers Rolf

    PS: Je suis Charlie!

      Just to throw in another side note :-)

      And we had recently a discussion about people complaining that undefined values raise far too many warnings. ;-)

      Even here, I think giving the programmer control is the best option: When I'm generating stuff from templates, I often use no warnings 'uninitialized'; because I want my undefs to silently become "", but when I'm handling other data, e.g. from a database where there is a difference between NULL and 0.0, I prefer having the warnings (and once in a while I may even fatalize them).