Estoy tratando de comparar dos variables en las que usualmente son cadenas. Estas variables se generan desde una base de datos, $var1
desde un db y $var2
desde otro. Cuando los comparo en un ciclo, uso el operador ne
. Sin embargo, hay momentos en que estas variables son null
o undef
. La comparación se realiza de la siguiente manera:Compara dos (potencialmente) variables undef en perl
foreach my $var1 (@$varlist)
{
if ($var1 ne $var2)
{
print "vars are not equal";
}
}
La cuestión es que si $var1
$var2
o son undef
entonces me da un error. Sin embargo, necesito poder comparar los valores como undef b/c. Tendré que escribirlos. Consideré convertir las variables a una cadena 'NULL' y luego de vuelta, pero eso parecía ineficiente.
¿Alguna manera de arreglar esto? Gracias!
¿Por qué no imprimiría la expresión si simplemente '$ var1' no está definido? – Prateek
Esto fue más la base de mi respuesta y por eso lo seleccioné. La respuesta final era la siguiente: 'a menos que ((! Defined $ var1 &&! Defined $ var2) && (definido $ var1 && defined $ var2 && $ var1 eq $ var2))' – Prateek
Una versión más corta usando xor: 'if ((definido $ var1 xor defined $ var2) o $ var1 ne $ var2) ' –