Не работает так же как say_v1 $fh "foo"
Как только видит в пакете процедуру say_v1 он сразу перестает понимать косвенный вызов для sayx_v1 $fh ... , say_v1 {$fh} ...

30.12.2013 4:24, Mons Anderson пишет:
а с принтом тоже хорошо-бы $handle указывать в {}

т.е.

print {$fh} "…"


On 30.12.2013, at 0:36, Анатолий Гришаев <[email protected]> wrote:

Если всегда указывать дескриптор, то да вполне рабочий метод.
Если нужно написать say_v1 "hello" вместе с say_v1 FOO "bar",

То они уже плохо вместе уживаются:
say_v1 FOO "bar" - ок
say_v1 "foo" - ок
say_v1 $fh "foo" -- уже не компилируется.

А второй минус нужно лезть  в  IO::Handle, но кажется туда можно добавлять свои 
методы.

29.12.2013 18:58, Mons Anderson пишет:
можно.

я так делал say для 5.8.8

*IO::Handle::print_blablabla = sub { … };

...

print_blablabla FILE "something to print";

On 27.12.2013, at 21:45, Анатолий Гришаев <[email protected]> wrote:

27.12.2013 21:00, Maxim Vuets пишет:
print_utf FILE_UTF $foo;
print_cp1251 FILE_UTF $foo;
Чего вы добиваетесь этим?
Хотел максимально сохранить стиль исходного кода, чтобы print заменить на 
print_blabla простым search & replace.

А второе чтобы можно было использовать одну сабу для метода и для вызова 
(иногда нужно);

Жалко, что нельзя сделать корректно полностью.
Но этот метод меня устроит.

--
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

Ответить