2009/4/14 Alexander Q <[email protected]>: > use strict; > use warnings; > use Data::Dumper; > > for(1..10) { > my $t = 'abcd' if 0; > print Dumper $t; > $t = 'def'; > } > > В Втр, 14/04/2009 в 16:39 +0400, Eugene Kosov пишет: >> Где фокус? >> Замени 'undef' на что-нить другое, чтоб не смущало. > > Пожалуйста. > > Фокус в том, что > 1) my $t = 'abcd' if 0; НЕ выполняет всю строку (начиная с my). Тогда > use strict должен бы ругнуться на $t='def';, но он молчит > 2) my $t = 'abcd' if 0; выполняет my $t, но не выполняет присваивание > ='abcd'. Тогда должно бы дампиться $VAR1 = undef; > > А оно работает как-то по-другому, непонятно для меня. > 1. Такое впечатление что оно сохраняет значение $t между запусками цикла. 2. IMHO my $bla = somecoolcode() if (something); лучше всетаки писать в два этапа my $bla = undef; $bla = somecoolcode() if (something);
По крайней мере не вызывает вопросов. -- WBR, Yuri Pac -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
