... 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:
AFAIK, this is universal.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
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: <%-(-(-(-<
In reply to Re^2: Call to subs in a Dispatch Table
by AnomalousMonk
in thread Call to subs in a Dispatch Table
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |