Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re^2: Weighted Calculation

by dirtdog (Monk)
on May 01, 2014 at 16:35 UTC ( [id://1084651]=note: print w/replies, xml ) Need Help??


in reply to Re: Weighted Calculation
in thread Weighted Calculation

thanks for weighing in Moritz..pun intended..but i can't seem to get this to work. I know what you're doing with the following statement, but for some reason it's not working. Is the syntax correct?

 $user_weight{$cols[0]} //= 1;

Replies are listed 'Best First'.
Re^3: Weighted Calculation
by Laurent_R (Canon) on May 01, 2014 at 16:39 UTC
    This a relatively new feature. Which version of Perl are you using?

    If your version is old, try this line instead:

    $user_weight{$cols[0]} = 1 unless defined $user_weight{$cols[0]} ;

        "helpful" is quite a stretch. The message produced is just as unhelpful and uninformative as the source code line. As was demonstrated, one or both of them gave the recipient not the slightest clue that "//" wouldn't work. So, "use 5.010;" didn't actually help. At most it just induced surprise which was worked around in the obvious manner. Hard to expect otherwise.

        All "use 5.010;" does is add a layer to obscure the real problem that people will actually end up dealing with (though, it often just adds a problem layer when there isn't even a problem underneath).

        I had proposed ways to drastically improve how helpful it could be. More importantly, those would drastically reduce how often it would be pointlessly obstructive. Unfortunately, the lastest bizarre magic tied to such constructs makes the feature impossible to improve in an any meaningful way.

        - tye        

        Yes, you're right. Maybe dirtdog omitted it for some reason. I can hardly see another explanation. Well, let's wait for dirtdog's explanation...
Re^3: Weighted Calculation
by 2teez (Vicar) on May 01, 2014 at 19:14 UTC

    ..but for some reason it's not working. Is the syntax correct?

    If you are using perl version 5.10.0 and above, it should work. Of course the syntax is correct.
    However, this also work:     $user_weight{$cols[0]} ||= 1;

    The Defined-or operator was implemented in perl 5.10.0 check Defined-or-operator

    Update:

    Oops, I didn't see tye answer before posting mine, I had this post opened, then got distracted with some other things before submitting my post later. Only to refresh and see that mine post was in a way similar to his.
    +1 tye all the same.

    If you tell me, I'll forget.
    If you show me, I'll remember.
    if you involve me, I'll understand.
    --- Author unknown to me
      However, this also work:   $user_weight{$cols[0]} ||= 1;

      That will fail in the case in which the 'special' assigned weight for a worker is zero (maybe he or she is on vacation that week?): such a worker will be assigned a work-weight of 1.

      Update: Perl versions lacking  // might use exists:
          $user_weight{$cols[0]} = 1 unless exists $user_weight{$cols[0]};

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others chanting in the Monastery: (8)
As of 2024-04-19 08:45 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found