2013-06-20 3 views
1

Я пытаюсь написать некоторые модульные тесты для некоторого кода связи, который записывается в сокет. Во время тестирования я хотел бы, чтобы моя библиотека сообщений записывалась в строку, тогда я могу сравнить содержимое строки с тем, что, как я ожидаю, будет написано.StringWriter/StringIO for Perl

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

Есть ли эквивалент этого или Python StringIO для Perl? Что-то вроде этого уже встроено?

ответ

4

Да. Так как v5.8 вы можете открыть выходной дескриптор непосредственно на скалярную ссылку.

my $output; 
open my $handle, '>', \$output; 
print $handle "foo\n"; 
printf $handle "%d\n", 123; 
close $handle; 
print $output; # => "foo\n123\n" 
+1

Работы для чтения из строки тоже, просто измените '>' на '<'. –

Смежные вопросы