El código de
MARKO contiene un error muy frecuente: al poner array en contexto numérico, los array se convierten al número de elementos que contienen.
Entonces, lo que hace el código de
MARKO es comparar el número de elementos, pero no los propios elementos (se ve fácil que no funciona si inicializamos los array con otro valor, por ejemplo, '2'.
Y el operador '==' es numérico (¿qué ocurre cuando los elementos son de otro tipo?) y no actúa sobre todos los elementos de los array.
No queda más remedio que comparar elemento por elemento de los array.
Una forma cómoda de resolverlo es con el módulo
Array::Utils:
Using perl Syntax Highlighting
use Array::Utils qw(array_diff);
my @a = 1 .. 4;
my @b = 2 .. 8;
if ( !array_diff(@a, @b) ) {
# hacer algo cuando son diferentes
}
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Como
netsoul no quiere usar módulos... pues tendrá que escribir más líneas... o usar el par de líneas que usa internamente Array::Utils