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


in reply to Measure twice, cut once

I was a strong advocate for the inclusion of say into the language.

Indeed, I even implemented it, and a generic "feature enablement" feature and offered the patch, but it was rejected. Something about not having enough *nixie-isms or some such.

3 or 4 years later say turned up with a bunch of other new features -- I'd list 'em, but i would have to look them up; that's how much impact they had.

Anyways, I tried it -- say -- for a while. I added the incantation use 5.010; to my "new .pl template", and made a concious effort to type say instead of print. But then I got bitten by some weird interaction between one of my 'standard idioms' and one of the other new features that construct enabled -- something to do with so called Smart Matching -- and so I backed that out and went for the more verbose: use feature qw[ say ]; instead.

But then I encountered a situation where say didn't work properly without my adding a bunch of extra parens -- something to do with it having been implemented as a "low-precedence keyword" or some such -- and well, it just seemed more hassle than reverting to my long time habit of -l on the shebang line.

So I reverted to that.

Since then, there have been a rash of new major versions; each of which has included some new feature -- singular -- or other. I'm not really sure what they are though. The "New version release" announcements always seem to favour quoting some gob of Tolkien or Tolkien-eque prose and re-iterating a long list of contributors than actually telling the world why the new version was released and what benefits come from adopting it.

And here I sit, still using 5.10.1 because the equation of the effort involved in upgrading versus the benefits that might accrue from doing so, hasn't (yet) swung in favour of the latter. It is almost there. I almost made the leap to 5.14 recently, but with the impending arrival of 5.16, I decided to hang on a little longer and so defer the pain a little longer.

In my (one, unimportant perl user's) opinion: the development/release schedule over the last few years/cycles has been more about satisfying the fashionistas needs -- keeping up with the Hanssons; being seen to be actively "moving forward"; change for change sake -- and the search for post-modernism, than the actual long terms needs of the language and its (current & long term) users.


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

The start of some sanity?

Replies are listed 'Best First'.
Re^2: Measure twice, cut once
by tobyink (Canon) on Mar 24, 2012 at 13:38 UTC

    The smart match operator (~~) is always available in 5.10 and above, whether you explicitly use 5.010 or not.

    The features which an explicit use 5.010 enables are:

    • say
    • state
    • switch (i.e. the given, when and default keywords)

    I agree with you that the releases since 5.10 have not been especially compelling feature-wise. Some of the features are nice, but they're not world-changing.

    package My::Foo 1.00 { ... }

    ... is nicer syntax for starting a package, but it's not so awesome that I'm willing to drop compatibility with pre-5.12 Perl just to use it.

    Auto-dereferencing hashrefs and arrayrefs for each, push, shift, etc saves me... what? Three characters max?

    Which is not to say that p5p are wasting their time. There are no doubt other, less visible changes which are big wins, but I haven't seen anything to get massively excited about since 5.10.

    I think perhaps 5.18 will be the next time we see something interesting added to the language, because part of the 5.16 development seems to have been about getting a better structure in place for building use 5.XXX-dependant features.

    perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'
      The smart match operator (~~) is always available in 5.10 and above, whether you explicitly use 5.010 or not.

      Fair enough. I don't recall exactly what it was that I was bitten by, but something caused me to revert.

      I think perhaps 5.18 will be the next time we see something interesting added to the language, because part of the 5.16 development seems to have been about getting a better structure in place for building use 5.XXX-dependant features.

      I am aware (and appreciative of) that a lot of the binary compatibility breaking changes in the recent releases have been to do with improving the internals structuring of the sources such that it: a) makes them easier to maintain; b) makes it easier to add new features going forward. Both of which are good things and involve considerable dedicated efforts by those doing the work. I applaud those changes.

      But it does feel like many of them could have been confined to the development builds -- whilst confining releases to minor versioned bug fixes -- until the internal changes could be rolled up into a single major release.

      But I'm not involved in the work, so my opinion doesn't (and shouldn't) count for much. And I do have the option of holding off from upgrading.

      So none of this is a complaint, nor even criticism. Just one man's view from the outside looking in.


      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.

      The start of some sanity?