[Moscow.pm] Код работает в 5.8.8 и не работае в 5.10.1, почему?

Alex Varyanick q на cono.org.ua
Вт Фев 1 03:16:22 PST 2011


2011/2/1 Sergey Leschenko <sergle.ua на gmail.com>:
> Добрый день
>
> Есть такой фрагмент:
>
> use strict;
> use Data::Dumper;
>
> my $info = {
>    Column1 => 'Value1',
>    Column2 => 'Value2',
>    Column3 => 'Value3',
> };
> my @fields_from_master = qw(Column1 Column2);
> my @fields_to_alias = qw(Col1 Col2);
> my %values_from_master = ();
>
> @{ %values_from_master }{ @fields_to_alias } = @{ %$info
> }{@fields_from_master };
>
> print Dumper(\%values_from_master);
>
>
> Enterprise Linux Enterprise Linux Server release 5.4 (Carthage)
> This is perl, v5.8.8
> perl t.pl
> $VAR1 = {
>          'Col2' => 'Value2',
>          'Col1' => 'Value1'
>        };
>
> Red Hat Enterprise Linux Server release 6.0 (Santiago)
> This is perl, v5.10.1
> perl t.pl
> Can't use string ("3/8") as a HASH ref while "strict refs" in use at
> t.pl line 13.
>
> Чем объясняется эта ошибка? в perldelta сходу ничего похожего нет.

% perl -Mstrict -MData::Dumper -le 'my %h=(1,2,3,4); @h{qw(1 3)} = (5,
6); print Dumper \%h'
$VAR1 = {
          '1' => 5,
          '3' => 6
        };

% perl -Mstrict -MData::Dumper -le 'my %h=(1,2,3,4); @{%h}{qw(1 3)} =
(5, 6); print Dumper \%h'
Can't use string ("2/8") as a HASH ref while "strict refs" in use at -e line 1.

% perl -V:version
version='5.10.1';



-- 
Varyanick I. Alex
icq: 102 575 440
skype: cono..
q на cono.org.ua


Подробная информация о списке рассылки Moscow-pm