Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Andrey Chernomyrdin                  2:5020/400     17 Nov 2005  14:49:40
 To : Alexey Bavykin
 Subject : Re: вопрос про STDOUT
 -------------------------------------------------------------------------------- 
 
 Alexey Bavykin wrote:
 
 > Andrey Chernomyrdin @ Thu 17/11/05 12:04 +0300 :
 > 
 >  AC> День добрый,
 >  AC> Вот хотелось-бы узнать такую вещь:
 >  AC> В подпрограмму (foo) передают некий скаляр, если это reference - то
 >  AC> считаем что это некий объект который поддерживает метод print и с
 >  AC> помощью этого метода выводим информацию, если это не reference - то
 >  AC> считаем что это имя файла который нужно открыть и выводить в него
 >  AC> информацию.
 > 
 >  AC> Теперь если я хочу вывести информацию на STDOUT я передаю foo(
 >  AC> *STDOUT ), но *STDOUT - это не reference 8-/ и у него нет метода
 >  AC> print.
 > 
 >  AC> $ perl -e '$o = *STDOUT; print STDOUT ( "ref: <", ref( $o ), ">\n")'
 >  AC> ref: <>
 >  AC> $ perl -e '$o = *STDOUT; $o->print( "ref: <", ref( $o ), ">\n")'
 >  AC> Can't locate object method "print" via package "IO::Handle" at -e line 1.
 > 
 >  AC> Или я где-то в трех соснах заблудился, либо...
 > 
 > use UNIVERSAL qw/can/;
 
 Про это я знаю, просто странно что в IO::Handle нету метода print, хотя:
 
 $ perldoc IO::Handle
 NAME
         IO::Handle - supply object methods for I/O handles
 
 SYNOPSIS
             use IO::Handle;
 
             $io = new IO::Handle;
 ...
 METHODS
         See perlfunc for complete descriptions of each of the following sup-
         ported "IO::Handle" methods, which are just front ends for the corre-
         sponding built-in functions:
 
             $io->close
             $io->eof
             $io->fileno
             $io->format_write( [FORMAT_NAME] )
             $io->getc
             $io->read ( BUF, LEN, [OFFSET] )
             $io->print ( ARGS )
             $io->printf ( FMT, [ARGS] )
             $io->stat
             $io->sysread ( BUF, LEN, [OFFSET] )
             $io->syswrite ( BUF, [LEN, [OFFSET]] )
             $io->truncate ( LEN )
 
 то есть по документации вроде-бы как есть, а вот то, что я получаю после *STDOUT
 имеет тип IO::Handle но не имеет метода print.
 Хотя если как советует Maxim Yemelyanov в своем посте:
 IO::Handle->new_from_fd(fileno(STDOUT), 'w') то получаем полноценный IO::Handle 
 объект.
 Просто не хотелось иметь такие сложности именно с STDOUT. Это ведь должен быть
 полноценный объект, то есть записи:
 print STDOUT "text\n";
 и STDOUT->print( "text\n" ); должны быть полностью идентичные.
 А мы имеем:
   $ perl -e '$o = *STDOUT; print $o "Hi\n"' - работает правильно
 но с другой стороны:
   $ perl -e '$o = *STDOUT; $o->print( "Hi\n" )'
   Can't locate object method "print" via package "IO::Handle" at -e line 1.
 
 P.S.
   Да совсем забыл сказать:
 
 $ perl -v
 
 This is perl, v5.8.7 built for sparc-linux-gnu-thread-multi
 
 Copyright 1987-2005, Larry Wall
 
 Perl may be copied only under the terms of either the Artistic License or the
 GNU General Public License, which may be found in the Perl 5 source kit.
 
 Complete documentation for Perl, including FAQ lists, should be found on
 this system using `man perl' or `perldoc perl'.  If you have access to the
 Internet, point your browser at http://www.perl.org/, the Perl Home Page.
 
 Хотя на какой платформе собран перл - не важно - ошибка одна и та-же
 
 -- 
 Andrey Chernomyrdin
 
 --- ifmail v.2.15dev5.3
  * Origin: Demos online service (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 вопрос про STDOUT   Andrey Chernomyrdin   17 Nov 2005 13:04:33 
 Re: вопрос про STDOUT   Maxim Yemelyanov   17 Nov 2005 14:08:32 
 Re: вопрос про STDOUT   Alexey Bavykin   17 Nov 2005 14:30:11 
 Re: вопрос про STDOUT   Andrey Chernomyrdin   17 Nov 2005 14:49:40 
 Re: вопрос про STDOUT   Alexey Bavykin   17 Nov 2005 15:19:56 
 Re: вопрос про STDOUT   Andrey Chernomyrdin   17 Nov 2005 15:47:54 
 Re: вопрос про STDOUT   yurik shestakov   17 Nov 2005 15:52:28 
Архивное /ru.perl/65773d405946.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional