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 $!barou 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) barem $!, que neste momento é Nilporque não houve nenhum erro.
E parece que eu posso realmente chamar qualquer método que eu queira Nile todos eles retornam silenciosamente Nil, incluindo coisas como Nil.this-is-a-fake-methode Nil.reverse-entropy(123).
Isso é um recurso? Se sim, qual é a lógica?