uso lenguaje español ejemplos concatenar caracteres busqueda string perl

string - lenguaje - Comparación de cuerdas en Perl con "eq" vs "=="



lenguaje perl ejemplos (4)

¿Intentó $str1 y $str2 ?

Encontré un problema similar con el uso de (otro) $str1 eq ''Y'' y solo desapareció cuando lo hice por primera vez:

chomp($str1); if ($str1 eq ''Y'') { .... }

funciona después de eso.

Espero que ayude.

Esta pregunta ya tiene una respuesta aquí:

Soy (un completo novato de Perl) haciendo una comparación de cadenas en una declaración if :

Si hago lo siguiente:

if ($str1 == "taste" && $str2 == "waste") { }

Veo el resultado correcto (es decir, si la condición coincide, evalúa el bloque "luego"). Pero veo estas advertencias:

El "gusto" del argumento no es numérico en la ecuación numérica (==) en el número de línea x.
Argumento "desperdicio" no es numérico en la ecuación numérica (==) en el número de línea x.

Pero si lo hago:

if ($str1 eq "taste" && $str2 eq "waste") { }

Incluso si se cumple la condición if, no evalúa el bloque "then".

Aquí, $str1 es taste y $str2 es waste .

¿Cómo debo solucionar esto?


Primero, eq es para comparar cadenas; == es para comparar números.

Incluso si se cumple la condición "si", no evalúa el bloque "entonces".

Creo que tu problema es que tus variables no contienen lo que crees que hacen. Creo que su $str1 o $str2 contiene algo así como "sabor / n" más o menos. Compruébelos imprimiendo antes de su si : print "str1=''$str1''/n"; .

La nueva línea final se puede eliminar con chomp($str1); función.


Tal vez la condición que estás usando sea incorrecta:

$str1 == "taste" && $str2 == "waste"

El programa entrará en la parte THEN solamente cuando las dos condiciones establecidas sean verdaderas.

Puedes probar con $str1 == "taste" || $str2 == "waste" $str1 == "taste" || $str2 == "waste" . Esto ejecutará la parte THEN si cualquiera de las condiciones anteriores es verdadera.


== hace una comparación numérica: convierte ambos argumentos en un número y luego los compara. Siempre que $str1 y $str2 evalúen a 0 como números, se cumplirá la condición.

eq hace una comparación de cadenas: los dos argumentos deben coincidir léxicamente (distingue entre mayúsculas y minúsculas) para que se cumpla la condición.

"foo" == "bar"; # True, both strings evaluate to 0. "foo" eq "bar"; # False, the strings are not equivalent. "Foo" eq "foo"; # False, the F characters are different cases. "foo" eq "foo"; # True, both strings match exactly.