Tôi hiện đang bắt đầu với Perl OOP bằng gói "Moose".Làm cách nào để xử lý các tham số tùy chọn trong Moose?
Trình biên dịch phàn nàn rằng "Không thể sửa đổi cuộc gọi chương trình con không phải lvalue tại dòng Parser.pm 16."
Tôi không hiểu tại sao tôi không thể chỉ định một đối tượng mới. Tôi đoán có một cách tốt hơn hoặc hợp lệ hơn để làm các tham số tùy chọn với Moose?
#!/usr/bin/perl -w
package Parser;
use Moose;
require URLSpan;
require WWW::Mechanize;
has 'urlspan' => (is => 'rw', isa => 'URLSpan', required => 1);
has 'mech' => (is => 'rw', isa => 'WWW::Mechanize');
sub BUILD {
my $self = shift;
if(!$self->mech) {
warn("no Mech set for " . $self->urlspan->name);
$self->mech = WWW::Mechanize->new(agent => 'Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.4',
stack_depth => 1
); #line 16
}
}
Tôi không thấy bất kỳ kết nối nào với thông số tùy chọn. Bạn có thể mở rộng về điều đó? – ysth