8
今天我裝Rakudo星2012.07和tryed寫一個簡單的Perl腳本6:奇怪的行爲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的::上線244簡單就是:
my @header_lines = $resp.subbuf(
0, $header_end_pos
).decode('ascii').split(/\r\n/);
奇怪的是,下面的代碼是OK:
> 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上。在這種情況下應該使用哪種方法?
你可能會想要問的IRC,通道#perl6。 參見:http://irclog.perlgeek.de/perl6/today –