Идея состоит в том, чтобы создать как бы копию "старого" STDOUT, а потом, используя эту копию, восстановить STDOUT в прежнем виде.
В общем, твой код будет выглядеть вот так (я вставил комментарии - разберешься):
---
my $buffer;
open my $oldout, ">&STDOUT"; #создаем копию STDOUT
close STDOUT;
open(STDOUT, '>',\$buffer);
print "qwerty";
open STDOUT, ">&", $oldout; #восстанавливаем STDOUT
{$buffer = "Buffer= ".$buffer;} #Здесь обрабатываем переменную $buffer
print STDOUT $buffer; #Содержимое $buffer уйдет пользователю
---
Таким образом у тебя содержимое $buffer выведется в "нормальный" STDOUT, то есть уйдет пользователю следующее:
Buffer= qwerty
Возможо, есть и другие способы решения проблемы - я пользуюсь этим.
|