Attualmente sto usando il XML::LibXML
modulo nel mio script Perl. Il XML::LibXML
il modulo che stiamo attualmente utilizzando sulle nostre macchine è stato compilato su una versione più recente di libxml2
libreria e l'istruzione use genera il seguente avviso:
Warning: XML::LibXML compiled against libxml2 20708, but runtime libxml2 is older 20706
L'avviso non influisce sulle prestazioni del mioscript. Ho parlato con il mio supervisore e lei dice che l'errore può essere completamente ignorato per i nostri scopi attuali. C'è un modo per disattivare temporaneamente questo avviso senza disattivare TUTTI gli avvertimenti? Ho provato a racchiudere il messaggio use
dichiarazione all'interno di un blocco di codice {}
e disattivato gli avvisi con no warnings;
, ma ho ancora ricevuto l'avvertimento.
risposte:
3 per risposta № 1È possibile inibire gli avvertimenti, anche quelli come quelli emessi a seguito di una chiamata esplicita a warn
funzione, impostando $SIG{__WARN__}
.
Un semplice esempio di lavoro (migliorato grazie al commento di ysth):
mod.pm:
package mod;
sub method {
print "This is mod::methodn";
}
warn "WE DO NOT WANT THIS WARNINGn";
1;
foo.pl:
#!/usr/bin/perl
use strict;
use warnings;
BEGIN {
local $SIG{__WARN__} = sub {};
require mod;
mod::->import();
}
warn "Normal warnings workn";
mod::method();
L'output è:
Normal warnings work
This is mod::method
e ho confermato che commentando l'impostazione di $SIG{__WARN__}
fa apparire l'avviso "NON VOGLIONO".