Hôm nay tôi cài đặt Rakudo sao 2012,07 và tryed để viết một đơn giản Perl 6 kịch bản:hành vi kỳ lạ của Buf.subbuf trong Perl 6
#!/usr/bin/env perl6
use v6;
use LWP::Simple;
my $html = LWP::Simple.get('http://perl6.org');
say $html;
Nó không làm việc vì các lỗi sau:
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
mã của LWP :: đơn giản trên đường dây 244 là:
my @header_lines = $resp.subbuf(
0, $header_end_pos
).decode('ascii').split(/\r\n/);
điều lạ là đoạn mã sau là OK:
> Buf.new(1,2,3,4,5).decode('ascii')
trong khi một thất bại này:
> Buf.new(1,2,3,4,5).subbuf(0,3).decode('ascii')
Method 'get_string' not found for invocant of class 'String'
Ông có thể giải thích cho tôi xin vui lòng, tại sao nó xảy ra? Theo như tôi thấy, trong cả hai trường hợp, phương thức Buf.decode được gọi là:
> Buf.new(1,2,3,4,5).subbuf(0,3).isa('Buf')
True
> Buf.new(1,2,3,4,5).isa('Buf')
True
Có lẽ đó là lỗi trong Rakudo Perl? Hoặc có thể subbuf là một phương pháp không được chấp nhận/không có giấy tờ? Nó không có trên doc.perl6.org. Trong trường hợp này, phương pháp nào nên được sử dụng?
Bạn có thể muốn hỏi điều đó trên IRC, kênh # perl6. Xem: http://irclog.perlgeek.de/perl6/today –