Этот ответ может быть бесполезным, может быть раздражающим, но я могу удалить его позже сегодня, если он был, и это все, что у меня есть, и мне нужно бежать.
Я не знаю, понимаете ли вы сообщение об ошибке, но давайте сначала рассмотрим это.
Malformed UTF-8 at line 1 col 45
in method new at main.p6 line 13
in block <unit> at main.p6 line 43
Это означает, что во время выполнения последней строки сообщения, строки 43 вашего кода , что-то пошло не так:
my $request = Request.new(:method("GET"), :path("/"), :$host, :$port);
Компилятор заметил, что выполнение этой последней строки включало путь, проходящий через другую строку в вашем коде, строка 13:
return self.bless(:$method, :$path, :$version, :$socket);
Так что это помогает лучше точно определить строку, во время выполнения которой произошла ошибка.
.bless
- это вызов метода. Он вызывается на self
, что относится к инвоканту, переданному методу, который, как вы можете предполагать, является объектом класса, в котором появляется вызов метода, а именно классом, который вы определяете Request
.
Ваш код не указывает, какой класс Request
наследует (используя is
), поэтому он наследует от Any
. bless
для Any
наследуется от Mu
s .
это этот код в компиляторе Rakudo:
method bless(*%attrinit) {
nqp::create(self).BUILDALL(Empty, %attrinit);
}
Таким образом, во время выполнения этого кода Perl 6 попытался прочитать некоторый UTF8 и обнаружил недопустимый символ в столбце 45 самой первой строки некоторых данных , которые он пытался прочитать.
Так вот, это лучшее, что я могу сказать о причинах, не видя ваших данных.