&{$hashref->{'key'}}('key');
vs.
$hashref->{'key'}->('key');
Don't you think the second could lead to confusions?
I'm just trying to find what is best, I honestly prefer the first but I've never seen it until recently, so I am thinking maybe no one uses it because it may be harder to understand at first sight.
There are no stupid questions, but there are a lot of inquisitive idiots.
| [reply] [Watch: Dir/Any] [d/l] [select] |
greengaroo:
Odd, I find your examples a good case for using the second one. Again, different people will find different things more clear.
When I use hashes, I generally use $$h{foo} in preference to $h->{foo}, primarily because it's easier to type, and I use hashes quite a bit. If I were trying to make it visually distinctive, I'd make the harder to type one be for the less frequently used case. Thus, I'd use something like:
$$hashref{key}->('arg');
To my eye, that stands out better. (But with my luck, it would blow up, so I'd better whip up a test...)
$ cat t.pl
use strict;
use warnings;
sub p { print "foo(", join(", ", @_), ")\n"; }
my $hr = { key=>\&p };
$$hr{key}->('arg');
$ perl t.pl
foo(arg)
...roboticus
When your only tool is a hammer, all problems look like your thumb. | [reply] [Watch: Dir/Any] [d/l] [select] |
| [reply] [Watch: Dir/Any] |
sub x{ say "x got [ @_ ]"; };;
$h{x} = \&x;;
$href = \%h;;
$href->{x}('fred','bill');;
x got [ fred bill ]
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.
RIP Neil Armstrong
| [reply] [Watch: Dir/Any] [d/l] |
I find the first one much harder to read. The difference between ( and { is subtle, but properly named variables ($handlers->{$event_name}->($event)) would make that irrelevant.
| [reply] [Watch: Dir/Any] [d/l] [select] |