Странное поведение Buf.subbuf в Perl 6

Сегодня я установил Rakudo Star 2012.07 и попытался написать простой скрипт на Perl 6:

#!/usr/bin/env perl6

use v6;
use LWP::Simple;

my $html = LWP::Simple.get('http://perl6.org');
say $html;

Не работает из-за следующей ошибки:

No such method 'get_string' for invocant of type 'String'
  in method decode at src/gen/CORE.setting:6766
  in method parse_response at lib/LWP/Simple.pm:244
  in method make_request at lib/LWP/Simple.pm:199
  in method request_shell at lib/LWP/Simple.pm:63
  in method get at lib/LWP/Simple.pm:28

Код LWP :: Simple в строке 244:

my @header_lines = $resp.subbuf(
    0, $header_end_pos
).decode('ascii').split(/\r\n/);

Странно то, что следующий код в порядке:

> Buf.new(1,2,3,4,5).decode('ascii')

пока этот не работает:

> Buf.new(1,2,3,4,5).subbuf(0,3).decode('ascii')
Method 'get_string' not found for invocant of class 'String'

Объясните, пожалуйста, почему это происходит? Насколько я понимаю, в обоих случаях вызывается метод Buf.decode:

> Buf.new(1,2,3,4,5).subbuf(0,3).isa('Buf')
True
> Buf.new(1,2,3,4,5).isa('Buf')
True

Возможно, это ошибка в Rakudo Perl? Или, может быть, subbuf - устаревший / недокументированный метод? Его нет на doc.perl6.org. В этом случае какой метод следует использовать?


person Aleksander Alekseev    schedule 27.08.2012    source источник
comment
Вы можете спросить об этом в IRC, канал # perl6. См. irclog.perlgeek.de/perl6/today.   -  person Csongor Fagyal    schedule 27.08.2012


Ответы (1)


Это была ошибка в Rakudo, которая уже исправлена ​​в последней разрабатываемой версии.

$ perl6 -e 'say Buf.new(1,2,3,4,5).subbuf(0,3).decode("ascii")'|hexdump -C
00000000  01 02 03 0a                                       |....|

(Я почти уверен, что исправление также относится к выпуску Rakudo 2012.08, выпуск Rakudo Star на основе компилятора выйдет на этой неделе).

Причина, по которой это еще не задокументировано, заключается в том, что я сосредоточился на тех методах, которые также включены в спецификацию, поскольку у них больше шансов выжить. Я надеюсь, что скоро добавлю документацию.

Обновление: дошли до него, см. http://doc.perl6.org/type/Buf#subbuf

person moritz    schedule 27.08.2012