Further to toolic's post, the change seems to have occurred between 5.8.9 and 5.10.1.
Checking perl5100delta and perl5101delta reveals no explanation for the change.c:\@Work\Perl>perl -wMstrict -le "print qq{perl version $]}; ;; my %h = qw(a aye b bee); my $hr = \%h; ;; print ${ %{$hr} }{a}; print ${ %h }{b}; " perl version 5.008009 aye bee c:\@Work\Perl>perl -wMstrict -le "print qq{perl version $]}; ;; my %h = qw(a aye b bee); my $hr = \%h; ;; print ${ %{$hr} }{a}; print ${ %h }{b}; " perl version 5.010001 Can't use string ("2/8") as a HASH ref while "strict refs" in use at - +e line 1.
Update: Note that similar syntax works/doesn't work for arrays:
c:\@Work\Perl>perl -wMstrict -le "print qq{perl version $]}; ;; my @ra = qw(zero one two); my $ar = \@ra; ;; print ${ @ra }[1]; print ${ @$ar }[2]; " perl version 5.008009 one two c:\@Work\Perl>perl -wMstrict -le "print qq{perl version $]}; ;; my @ra = qw(zero one two); my $ar = \@ra; ;; print ${ @ra }[1]; print ${ @$ar }[2]; " perl version 5.010001 Can't use string ("3") as an ARRAY ref while "strict refs" in use at - +e line 1.
Give a man a fish: <%-(-(-(-<
In reply to Re: hash dereferencing issue with perl 5.16.3
by AnomalousMonk
in thread hash dereferencing issue with perl 5.16.3
by KANAKADANDI
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |