Yes declaration of array reference has changed in 5.8. The code below will not compile under 5.8:
my @$ra_ret_save = @$ra_ret;
You do not have to declare array refence and copy from another array in two separate steps. You can do in one single step -
my $ra_ret_save = [ @$ra_ret ];
I have created a demo script below -
use strict;
use warnings;
use Data::Dumper;
my $ra_ret = [ qw/ a b c d / ];
print Dumper($ra_ret);
my $ra_ret_save = [ @$ra_ret ];
print Dumper($ra_ret_save);
And the output when run from 5.8 and 5.6 -
perl 5.8.0
----------
$VAR1 = [
'a',
'b',
'c',
'd'
];
$VAR1 = [
'a',
'b',
'c',
'd'
];
perl 5.6.1
----------
$VAR1 = [
'a',
'b',
'c',
'd'
];
$VAR1 = [
'a',
'b',
'c',
'd'
];