Pergunta

Eu estou tentando entender o seguinte pedaço de código:

sub foo {
    ...
    if ( $@ ) {
        ...
        die $@;
    }
}
Foi útil?

Solução

perldoc -f eval :

Se houver um erro de sintaxe ou de tempo de execução erro, ou uma declaração de "die" é executado, um valor indefinido é retornado por "eval", e US $ @ está definido para a mensagem de erro. Se houver nenhuma foi erro, $ @ é garantido para ser um nulo corda.

Veja também perldoc perlvar .

Outras dicas

$@ é uma variável mágica que contém a mensagem de erro do último comando eval, se houver.

O caso loop deve ser precedida de eval para que ela seja capaz de interceptar $ @.

Durante uma eval (), $ @ é sempre definido em caso de falha e cancelado em caso de sucesso.

No caso whr código dentro eval () não compilar, $ @ está definido para o erro de compilação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top