Sto provando a confrontare due variabili in cui di solito sono le stringhe. Queste variabili sono generate da un database, $var1
da un db e $var2
da un altro. Quando li paragono in loop, utilizzo l'operatore ne
. Tuttavia ci sono momenti in cui queste variabili sono null
o undef
. Il confronto viene fatto come segue:Confronta due variabili (potenzialmente) undef in perl
foreach my $var1 (@$varlist)
{
if ($var1 ne $var2)
{
print "vars are not equal";
}
}
Il problema è che se $var1
o $var2
sono undef
allora ottengo un errore. Tuttavia, devo essere in grado di confrontare i valori come undef b/c. Dovrò scriverli. Ho preso in considerazione la conversione delle variabili in una stringa "NULL" e poi indietro, ma ciò sembrava inefficiente.
Un modo per risolvere il problema? Grazie!
Perché non stampare l'espressione se solo '$ var1' non è definito? – Prateek
Questa era più la base della mia risposta ed è il motivo per cui l'ho selezionata. La risposta finale assomigliava a questa: 'a meno che ((! $ $ Definito e $! Definito $ var2) && (definito $ var1 && definito $ var2 && $ var1 eq $ var2))' – Prateek
Una versione più breve che utilizza xor: 'if ((definito $ var1 xor definito $ var2) o $ var1 ne $ var2) ' –