@ Бородин Спасибо. Обязательно нужно упомянуть - обновлено.
ался сделать что-то очень модное в Perl, и я думаю, что я страдаю от последствий. Я не знаю, возможно ли то, что я пытался сделать, на самом деле.
Моя основная программа создает такой канал:
pipe(my $pipe_reader, my $pipe_writer);
(изначально это был pipe (PIPE_READER, PIPE_WRITER), но я перешел на обычные переменные, когда пытался это отладить)
Тогда это разветвляется, но я думаю, что это, вероятно, не имеет значения здесь. Ребенок делает это:
my $response = Response->new($pipe_writer);
Конструктор Response является голым:
sub new {
my $class = shift;
my $writer = shift;
my $self = {
writer => $writer
};
bless($self, $class);
return($self);
}
Тогда позже ребенок напишет свой ответ:
$response->respond(123, "Here is my response");
Код для ответа выглядит следующим образом:
sub respond {
my $self = shift;
my $number = shift;
my $text = shift;
print $self->{writer} "$number\n";
print $self->{writer} "$text\n";
close $self->{writer}
}
Это вызывает странную ошибку компиляции: 'Строка найдена там, где ожидался оператор ... Отсутствует оператор перед $ number \ n "?' в точке первого отпечатка. Конечно, это нормальный синтаксис для распечатки, за исключением того, что у меня есть свойство объекта вместо обычного дескриптора, и это оказывается конвейером, а не дескриптором файла. Так что теперь я задаюсь вопросом, не позволено ли мне это сделать.