Я только начал работать с Moose и столкнулся со странной проблемой, которую не могу понять. Следующий код:
#!/usr/bin/env perl
use strict;
use warnings;
use Try::Tiny;
{
package Foo;
use Moose;
has x => ( is => 'ro', isa => 'Int' );
}
my $f;
try {
$f = Foo->new(x => 'x');
} catch {
die "oops\n";
}
print $f->x . "\n";
производит:
Can't call method "x" on an undefined value at m2.pl line 19.
Однако, если я заменю Try::Tiny
на TryCatch
, он будет действовать так, как я предполагаю:
oops
Даже если x
является правильным значением, скажем, 5
, Try::Tiny
все равно выдает ошибку undefined value
.
Поскольку вся документация Moose, которую я читал, использует Try::Tiny
, я очень озадачен, почему этот код не работает. Я что-то здесь не так делаю?