Hoy he instalado Rakudo estrella 2012.07 y tryed para escribir un simple script en Perl 6:Extraño comportamiento de Buf.subbuf en Perl 6
#!/usr/bin/env perl6
use v6;
use LWP::Simple;
my $html = LWP::Simple.get('http://perl6.org');
say $html;
No funciona debido al siguiente error:
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
código de LWP :: simple en la línea 244 es:
my @header_lines = $resp.subbuf(
0, $header_end_pos
).decode('ascii').split(/\r\n/);
lo extraño es que el siguiente código es correcto:
> Buf.new(1,2,3,4,5).decode('ascii')
mientras éste falla:
> Buf.new(1,2,3,4,5).subbuf(0,3).decode('ascii')
Method 'get_string' not found for invocant of class 'String'
¿Me podría explicar por favor, por qué sucede? Por lo que yo puedo ver, en ambos casos, se llama al método 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
Tal vez sea un error en Rakudo Perl? ¿O quizás subbuf es un método obsoleto/no documentado? No está presente en doc.perl6.org. En este caso, ¿qué método debería usarse?
Es posible que desee pedir que en el IRC, canal # Perl6. Ver: http://irclog.perlgeek.de/perl6/today –