[Moscow.pm] Волшебный баг с AnyEvent::postpone
Konstantin S. Uvarin
khedin на gmail.com
Сб Сен 14 02:17:49 PDT 2013
On Fri, 2013-09-13 at 21:30 +0400, Ilya Chesnokov wrote:
> 13 сентября 2013 г., 19:48 пользователь Konstantin S. Uvarin
> <khedin at gmail.com> написал:
> когда пытается
> выполнить "результат code"->().
>
>
> Это вовсе не code->() - это обычный hashref, который потом и
> передается в качестве аргумента (как это видно из второго примера).
Попробуем более другие примеры:
bash$ perl -wle 'sub foo; foo{ print "xx" }; sub foo { print shift }'
xx
Odd number of elements in anonymous hash at -e line 1.
HASH(0x9c167ec)
Явно хеш
[lodin-pad] [13:05:01] lodin ~/prg/AnyEvent-7.02
bash$ perl -wle 'foo{ print "xx" }; sub foo { print shift }'
xx
Can't call method "foo" without a package or object reference at -e line
1.
Где ворнинг про Odd number of elements?
Теперь с ";":
bash$ perl -wle 'sub foo; foo{ print "xx"; }; sub foo { print shift }'
syntax error at -e line 1, near "; }"
Execution of -e aborted due to compilation errors.
Опять хеш (иначе ; не было бы ошибкой)
[lodin-pad] [13:07:44] lodin ~/prg/AnyEvent-7.02
bash$ perl -wle 'foo{ print "xx"; }; sub foo { print shift }'
xx
Can't call method "foo" without a package or object reference at -e line
1.
; не ошибка, падаем в другом месте => не хеш
This is perl 5, version 14, subversion 2 (v5.14.2) built for
i686-linux-gnu-thread-multi-64int
На 5.18 то же самое (спасибо perlbrew)
И вот совсем жесть.
bash$ perl -we 'require URI::Escape; my $x =
uri_escape{ "URI::Escape" }; print $x;'
URI%3A%3AEscape
>
>
> Но пользователь об этом не факт что
> узнает.).
>
> Вообще я был бы рад, если бы из нижеприведённого корректным
> кодом был
> бы только вариант с прототипом.
>
> perl -wle 'foo{ 3 => print "xx" }; sub foo { print shift }'
> perl -wle 'sub foo; foo{ 3 => print "xx" }; sub foo { print
> shift }'
> perl -wle 'sub foo(&); foo{ 3 => print "xx" }; sub foo (&)
> { print
> shift }'
Подробная информация о списке рассылки Moscow-pm