Я нашел решение:
for file1 in Я нашел решение:
[110]cat1/* do
if [ -L $file1]; then
dir1="$(dirname `readlink -f $file1`)"
dir2="$(dirname `readlink -f Я нашел решение:
[110]cat2`)"
if [dir1 == dir2]
echo $dir1
fi
fi
done
$self->mech
вызов метода; Вы не можете действительно рассматривать его как поле в структуре C. Если Вы хотите установить его, необходимо передать новый объект ему.
$self->mech(
WWW::Mechanize->new(
agent => 'xyz',
stack_depth => 1
)
);
Вероятно, предпочтительный Американский лось способ сделать это должен установить lazy_build на атрибуте:
has 'mech' => (is => 'rw', isa => 'WWW::Mechanize', lazy_build => 1);
sub _build_mech {
warn("no Mech set for " . $self->urlspan->name);
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
);
}
Это разрешит атрибуту 'механика', чтобы быть заполненным в первый раз, когда это называют, если иначе не установлено конструктором или средством доступа (так как это все еще 'rw').
В то время как Perl обеспечил, способность использовать приписывает способ, которым Вы пытаетесь в течение очень многих лет (через то, что называют lvalue нижними индексами), это не что-то, что было в первых выпусках Perl OO, и люди в значительной степени учились обходиться без него. Тем более, что реализация проверки немного хитра (и неэффективна).
Вы могли использовать MooseX:: Meta:: Атрибут:: Lvalue, но (согласно документу) за счет не наличия типа, проверяющего некоторые атрибуты.
Я рекомендовал бы просто придерживаться $self-> атрибут ("значение") стиль.