Pregunta

Acabo de comenzar a aprender Perl y a saber, aprender flujo del programa: principales diferencias notables entre evaluar las cadenas y el número y usar los operadores apropiados. Script simple, tengo aquí que me está volviendo loco, ya que es una declaración súper simple, si más, que debería en "Mike" ingresar y no funciona. ENCONTRA LA DISTACIÓN DE OSE. Por favor ayuda

#!C:\strawberry\perl\bin\perl.exe

use strict;
#use warnings;
#use diagnostics;

print("What is your name please?");
$userName = <STDIN>;


if($userName eq "mike"){
    print("correct answer");
}
else{
    print("Wrong answer");
}
¿Fue útil?

Solución

Mientras leía tu pregunta, pensé que estabas a punto de tener un problema con las cadenas versus los valores numéricos en un igual. Considere el siguiente caso:

#!/usr/bin/env perl

use strict;
use warnings;

print("What is the meaning of life, the universe and everything? ");
chomp(my $response = <STDIN>);

if ( $response == 42) {
#if ( 42 ~~ $response ) {
    print "correct answer\n";
} else {
    print "Wrong answer\n" ;
}

Prueba los dos diferentes if declaraciones. Responde algo bueno como family y mira lo que pasa. los ~~ es el operador de partidos inteligentes que ha ayudado a algunos de este problema en Perl. Lea más al respecto aquí (en "Smart Matching in Detleal"). Tenga en cuenta también el uso en línea del chomp operador.

Otros consejos

Intente agregar una llamada a Chomp después de obtener su valor de Stdin:

$userName = <STDIN>;
chomp($userName);

Dado que el valor se lee en Stdin tendrá un carácter nuevo en el final. El chomp () incorporado eliminará una nueva línea desde el final de una cadena.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top