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

Mons Anderson inthrax на gmail.com
Вт Окт 27 07:25:25 PDT 2009


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
----------- следущая часть -----------
Вложение в формате HTML было извлечено&hellip;
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20091027/a67d3d0e/attachment.html>


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