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]} ;
| [reply] [d/l] |
| [reply] [d/l] |
"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.
| [reply] |
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...
| [reply] |
..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
| [reply] [d/l] |
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]};
| [reply] [d/l] [select] |