in reply to Re: Call to subs in a Dispatch Table
in thread Call to subs in a Dispatch Table

... the interpreter is less strict than the manual... Perhaps this is ... version specific ...

It is not version specific, as demonstrated by this example under ActiveState 5.8.9:

c:\@Work\Perl>perl -wMstrict -le "print qq{perl version $]}; ;; my %hash = ( func => sub { print qq{hi $_[0]}; }, elem => [ 'fee', 'fie', 'foe', ], ); ;; $hash{func}('there'); $hash{func}->('sailor'); ;; print $hash{elem}[2]; print $hash{elem}->[1]; " perl version 5.008009 hi there hi sailor foe fie
AFAIK, this is universal.

As I mentioned in my /msg to you, I also thought the syntax  $general{data}() would not work. I'm sure this is discussed somewhere, but I haven't had the time yet to search it out. Basically, use of  -> (see The Arrow Operator in perlop) is only required at "top" level in a nested hash, array or code reference chain that's accessed initially by reference. That's because everything below the topmost level in a multi-dimensional structure must always be a reference of some kind (if it's not a simple string or number), and Perl implicitly understands this.


Give a man a fish:  <%-(-(-(-<