[Moscow.pm] Прототипы функций для файлов

Mons Anderson mons на cpan.org
Пт Янв 3 21:23:00 PST 2014


Согласен, не работает.

say1 "test"; #ok
say1 STDOUT "test"; #ok
say1 $fh "test"; # fail
say1 {$fh} "test"; # fail

навскидку поковырял namespace::clean - тоже не помогает.
возможно и есть какая-нибудь магия, чтоб заставить работать (Devel::Declare etc не в счёт), но на первый взгляд - работать не будет.
тем более если учесть, что indirect вызовы признаны устаревшими, то не вижу особого смысла ковырять в этом направлении.


On 30.12.2013, at 10:57, Анатолий Гришаев <0body0 на rambler.ru> wrote:

> Не работает так же как 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, Анатолий Гришаев <0body0 на rambler.ru> 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, Анатолий Гришаев <0body0 на rambler.ru> 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
>>>>> moscow-pm на pm.org | http://moscow.pm.org
>>> -- 
>>> Moscow.pm mailing list
>>> moscow-pm на pm.org | http://moscow.pm.org
> 
> -- 
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org



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