Como posso verificar se o `ficheiro::localização::remover a árvore` falhou?

Estou habituado... or die".. falha... $!";.

fiquei surpreso ao descobrir que para saber se File::Path::remove_tree falhou ou não devo fazer algo assim:

remove_tree( 'foo/bar', 'bar/rat', {error => \my $err} );
if (@$err) {
 die "error..."
}
Está a escapar-me alguma coisa? É mesmo este o caminho a seguir?

Muito código desnecessário para mim...

Author: David B, 2010-09-24

3 answers

remove_tree retorna o número de arquivos apagados com sucesso, então ele precisa de outro método de relatar um erro do que um valor de retorno. Tenha em mente que um número de arquivos podem ter sido apagados antes de um erro ser encontrado, então você não pode confiar que o valor retornado seja 0 como indicando um erro.

Se este é o caminho a seguir para comunicar erros é uma questão de gosto. Dos próprios documentos:

Nota: Considera-se o seguinte mecanismo de tratamento de erros: experimental e está sujeito a alteração > feedback pendente dos utilizadores.

 3
Author: Dancrumb, 2010-09-24 19:28:02

Removo um caminho de cada vez e depois verifico se ainda lá está depois:

 foreach my $path ( @paths ) {
      my $rc = remove_tree( $path, { ... } );
      die ... if -e $path;
      }

ComoDancrumb disse , Você não pode confiar no valor de retorno.

 1
Author: brian d foy, 2017-05-23 12:11:47