Никак. То есть можно, но - цитирую перлдок: если в <> находится что-то, не являющееся файлхэндлом, либо простым скаляром, содершащим файлхэндл, то эта хрень будет расценена как шаблон имени файла для glob, то есть, в твоем случае это эквивалентно glob("$self->{$fd}")

на второй вопрос, STDOUT-ы находятся в main, не знаю, может можно как то извратиться...



25.12.2013 17:13, Харпалёв Иван пишет:
Доброго времени суток, глубокоуважаемый MoscowPM!!

Несколько вопросов связанных с дескрипторами:

1) Как написать  $string = <$self->{$fd}>  ??

2) Можно ли "определить  STDOUT  внутри пакета" снаружи  него?

что-то вроде

perl -E '
package P;
sub f{print 33};

 package main;
 open my $out, "<out";
 *P::STDOUT=$out;    #или local или как-то ещё...

 P->f()'

только, чтобы работало.

Кажется нужным для написания тестов всему, что срёт на экран.


Спасибо!



-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить