Как я могу сцепиться в печать Perl?

В Visual Studio 2017 вы можете увидеть результат из тестового проводника.

1) В вашем методе проверки Console.WriteLine («что-то»);

2) Запустите тест.

3) В окне тестового проводника нажмите Пропущенный тестовый метод.

4) И нажмите ссылку «Выход».

И нажмите «Выход», вы увидите результат Console.Writeline ().

20
задан Robert P 13 January 2009 в 16:51
поделиться

4 ответа

Существуют много созданные-ins, что можно переопределить (см. perlsub). Однако print один из созданных-ins, который не прокладывает себе путь. Трудности переопределения print детализированы в этом поток perlmonk .

Однако Вы можете

  1. , Создают пакет
  2. Связь дескриптор
  3. Выбор этот дескриптор.

Теперь, несколько человек дали основную платформу, но она удается отчасти как это:

package IO::Override;
use base qw<Tie::Handle>;
use Symbol qw<geniosym>;

sub TIEHANDLE { return bless geniosym, __PACKAGE__ }

sub PRINT { 
    shift;
    # You can do pretty much anything you want here. 
    # And it's printing to what was STDOUT at the start.
    # 
    print $OLD_STDOUT join( '', 'NOTICE: ', @_ );
}

tie *PRINTOUT, 'IO::Override';
our $OLD_STDOUT = select( *PRINTOUT );

можно переопределить printf таким же образом:

sub PRINTF { 
    shift;
    # You can do pretty much anything you want here. 
    # And it's printing to what was STDOUT at the start.
    # 
    my $format = shift;
    print $OLD_STDOUT join( '', 'NOTICE: ', sprintf( $format, @_ ));
}

См. Связь:: Дескриптор для того, что все можно переопределить поведения STDOUT.

25
ответ дан 29 November 2019 в 23:41
поделиться

Можно использовать Perl выбор для перенаправления STDOUT.

open my $fh, ">log.txt";
print "test1\n";
my $current_fh = select $fh;
print "test2\n";
select $current_fh;
print "test3\n";

дескриптор файла мог быть чем-либо, даже канал к другому процессу, которые отправляют, обрабатывает Ваши сообщения журнала.

PerlIO:: мишень в PerlIO:: модуль Util кажется, позволяет Вам 'класть вывод для первого удара' дескриптора файла нескольким местам назначения (например, процессор журнала и STDOUT).

9
ответ дан 29 November 2019 в 23:41
поделиться

Вы могли запустить скрипт из сценария обертки, который получает stdout исходного сценария и пишет вывод, где-нибудь разумный.

-1
ответ дан 29 November 2019 в 23:41
поделиться

Большой выбор. Используйте выбор () для изменения дескриптора файла та печать значения по умолчанию к. Или свяжите STDOUT. Или вновь откройте его. Или примените уровень IO к нему.

7
ответ дан 29 November 2019 в 23:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: