Quando você deseja sinalizar que algo deu mais ou menos errado você invoca a função warn.

Quando você deseja sinalizar que algo deu muito errado, e quer jogar a toalha, você invoca a função die.

As pessoas que lidam com frequência com o Perl estão bem familiarizadas com a função die. Uma das expressões mais comuns é utilizada no estilo open or die de se abrir um arquivo.

Uma chamada à função die irá imprimir um texto na saída de erro padrão (STDERR) e em seguida terminará o programa sendo executado.

Ela possui as mesmas características que a função warn possui, ou seja se o texto que você passou a ela não terminar com uma nova linha /n, o perl automaticamente inclui o nome do arquivo e o número da linha onde a função die foi chamada.

Isso pode ajudar a resolver os problemas identificando a sua origem.

Lançando Exceções

Enquanto que em um simples script isso normalmente não é necessário, a função die na verdade lança exceções. Em scripts simples você provavelmente não terá um código especialmente escrito para tratar essas exceções. Nestes casos você simplesmente usa a função die ao invés de invocar a função warn e então >exit.

Em aplicações maiores, você provavelmente irá querer lançar exceções e em seguida capturá-las usando eval. Nós iremos lidar sobre isso em um outro artigo.

Colecionando chamadas

De uma forma um pouco mais avançada, Perl fornece uma forma de se lidar com o sinal de chamada da função die, assim como é feito com a warn. A grande diferença é que o gerenciador do sinal que coleta a chamada da função die não impede que o programa seja interrompido. Neste caso é apenas interessante em casos onde você já capturou a exceção (p.ex. usando a função eval) e está interessado em encontrar onde alguém capturou uma exceção, mas não lidou de forma adequada. Para estes casos veja o artigo capturando chamadas.