Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re^2: regex, find words that occur more than once.

by Anonymous Monk
on Sep 15, 2020 at 16:19 UTC ( #11121803=note: print w/replies, xml ) Need Help??


in reply to Re: regex, find words that occur more than once.
in thread regex, find words that occur more than once.

There's a whole lot going on in that one line ... including one of Perl's most pragmatic features, "auto-vivification." New words are automatically inserted into the $words array (with value 0) if they do not yet exist there. Much easier to do in Perl than with most other languages.
  • Comment on Re^2: regex, find words that occur more than once.

Replies are listed 'Best First'.
Re^3: regex, find words that occur more than once.
by LanX (Cardinal) on Sep 15, 2020 at 17:00 UTC
    I doubt that's autovivification.

    x++ means x+=1 means x=x+1

    I expect this to work in many languages, where undef+1 yields 1

    Cheers Rolf
    (addicted to the Perl Programming Language :)
    Wikisyntax for the Monastery

      It's not; autovivification is defined in perlref and is perl automatically treating undef in an lvalue reference context as evaluating to a reference to a newly created item of the correct type (arrayref or hashref). This is at best just undefined in a numeric context (in this case coming from an empty slot in a hash) being treated as a numeric value of zero.

      (Now were it $words{$something}->{$_}++ and $words{$something} wasn't defined for a given value of $something then it WOULD be an instance of autovivification (in which case a new hashref would be conjured up, stuck into $words{$something}, and then the key $_ in that new hashref would be looked up (and since it's an empty hash would evaluate to undef which would numerically be zero then that would be incremented to one, and finally that one stored back into that hashref)))

      (But as usual for the source . . . INEW)

      Edit: tweaked first paragraph to be even more technically correct (the best kind).

      The cake is a lie.
      The cake is a lie.
      The cake is a lie.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://11121803]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (3)
As of 2020-10-26 19:45 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    My favourite web site is:












    Results (253 votes). Check out past polls.

    Notices?