今天我安装了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
第244行的LWP ::简单代码是:
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,5).subbuf(0,3).decode('ascii') Method 'get_string' not found for invocant of class 'String'
你能解释一下,为什么会这样?据我所知,在两种情况下都会调用Buf.decode方法:
> Buf.new(1,3).isa('Buf') True > Buf.new(1,5).isa('Buf') True
也许这是Rakudo Perl中的一个错误?或者也许subbuf是一个已弃用/未记录的方法?它不在doc.perl6.org上.在这种情况下应该使用哪种方法?
解决方法
原文地址:https://www.jb51.cc/Perl/172160.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。