для не продвинутого пользователя языка (да, большинство пользователей – не продвинутые)
это поведение неожиданное, т.к. интуитивно кажется, что <> будет работать как итератор, а не как slurp всего файла
а for там или while – для него это не так принципиально
08.12.2015, 14:54, "Андрей Асякин" <[email protected]>:
если не шутишь, то,--
for/foreach работают со списком,
поскольку <fh> в списковом контексте читает весь файл
foreach (<>) {} равносильно
my @data = "" # прочитали весь файл/файлы в массив
foreach (@data)
<> можно заменить на любую get_something()
while (expr) {} на каждой итерации вычисляем условие, контекст булевый, то есть скалярный
while (<>) { # здесь <fh> в скалярном контексте, читаем построчно в $_
в обсуждаемом коде foreach (<>) не приведет к ошибке, но в целом такое использование с <> странно, "вероятно не то, что думали"
foreach my $row ($sth->fetch) { # итерация по списку из одного элемента ([...])
On 12/08/2015 01:51 PM, Anatoly Y wrote:а чем?On Tue, Dec 8, 2015 at 4:20 PM, Андрей Асякин <[email protected]> wrote:Чувак пишет скрипт stackcollapse_perf.pl, от одного названия можно обосраться... но чем for от while отличается не знает)
On 12/08/2015 12:54 PM, Orlovsky Alexander wrote:brendangregg: This weird Perl trick made my program eat 5x less memory, and run faster https://t.co/1ty7vvEEGL
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org
Moscow.pm mailing list
[email protected] | http://moscow.pm.org
-- Moscow.pm mailing list [email protected] | http://moscow.pm.org
