Passei um tempo considerável depurando um script recentemente e, quando finalmente encontrei o problema, foi por causa do código que se parecia com isso:
class Foo {
has $.bar;
method () {
# do stuff
$!.bar;
}
}
Acabou que o problema era com isso $!.bar
, que deveria ter sido um $!bar
ou outro $.bar
. Eu entendi isso.
Mas por que isso não morre ?
Olhando para isso com mais detalhes, parece que a questão aqui é que eu estou tentando chamar um método (inexistente) bar
em $!
, que neste momento é Nil
porque não houve nenhum erro.
E parece que eu posso realmente chamar qualquer método que eu queira Nil
e todos eles retornam silenciosamente Nil
, incluindo coisas como Nil.this-is-a-fake-method
e Nil.reverse-entropy(123)
.
Isso é um recurso? Se sim, qual é a lógica?