[Moscow.pm] warn и "Modification of a read-only value"

Ruslan Zakirov ruslan.zakirov на gmail.com
Пт Окт 30 21:08:59 PDT 2009


Была проблема с push @x, foo(...); когда foo модифицирует массив @a.
Проблему починили и возможно вместе починился и warn.

2009/10/27 Mons Anderson <inthrax на gmail.com>:
> On Tuesday 27 October 2009 17:12:23 Denis Evdokimov wrote:
>
>> my @ranges;
>
>> warn;
>
>> my @aaa = my_sub();
>
>> @aaa = my_sub();
>
>> warn;
>
>> push @ranges, @aaa;
>
>> warn;
>
>> push @ranges, my_sub();
>
>> warn;
>
>> sub my_sub
>
>> {
>
>>     warn; # Вот тут что-то происходит
>
>>     return 'aaa';
>
>> }
>
> Страное что-то.
>
> minimal testcase, если кому интересно
>
> perl5.8.8 -e 'push @a, sub { warn; return "" }->();'
>
> Warning: something's wrong at -e line 1.
>
> Modification of a read-only value attempted at -e line 1.
>
> perl5.8.8 -v
>
> This is perl, v5.8.8 built for i686-linux-thread-multi
>
> интересно, что если вместо push сделать splice, то работает.
>
> --
>
> Vladimir Perepelitsa aka Mons Anderson
>
> <inthrax на gmail.com> / #99779956
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
>



-- 
Best regards, Ruslan.


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