bucle a través de una lista en Perl

Estoy empezando a aprender Perl y esto es sólo una base poco bucle for para que me consiga una extraña salida y estaba esperando algo más de claridad sobre esto.

@numbers = {1,4,5,6,7,8,9};
for(my$i = 0; $i<=$#numbers; $i++)
{
    print ("$numbers[$i}\n");
}

la salida es de HASH(0x23a09c).

¿Esto qué significa y por qué obtengo este resultado.

saludos
Arian

  • Su ejemplo tiene un error de sintaxis. Asegúrese de que usted publique lo que en realidad están utilizando.
  • Yo, lo siento…gracias
InformationsquelleAutor Arianule | 2011-11-06

3 Kommentare

  1. 17

    Desea que este:

    @numbers = (1,4,5,6,7,8,9);
    foreach my $number (@numbers)
    {
        print ("$number\n");
    }

    Con {1,4,5,6,7,8,9} en realidad se está creando una referencia a un anónimo hash que contiene el valor de la clave pares (1 => 4, 5 => 6, 7 => 8, 9 => undef). Cuando usted escribe @numbers = {1,4,5,6,7,8,9}; que la referencia se convierte en la única escalar almacenados en el @numbers matriz.

    Además, si sólo se desea iterar sobre los elementos, sin necesidad de utilizar el estilo «clásico» con un contador.

    Que usted puede hacer:

    for my $number (1 .. 9) {
        print "$number\n";
    }

    Asegúrese de que usted tiene use strict; y el uso de advertencias; al comienzo de cada secuencia de comandos Perl de escribir. Estas directivas permiten perl para detectar los errores y advertir sobre ciertos posiblemente errónea código. Como un principiante, usted podría querer a la par de aquellos con warnings con diagnóstico para obtener información más detallada.

    Estos son muy útiles, especialmente cuando se comienza con Perl, ya que ayudan a evitar que se tiro en el pie.

    • Gracias asignar. Las llaves que fue interpretado como un hash. tan acostumbrados a usar llaves al declarar matrices.
    • No hay problema 🙂 yo todavía estoy luchando con Perl un poco a mí mismo. Por favor, acepte si se resuelve el problema. Gracias
  2. 5

    Lo que estás haciendo es crear un array con un hash ref en el índice 0, es decir:

    $numbers[0] = {
        1 => 4,
        5 => 6,
        7 => 8,
        9 => undef,
    };

    Si usted ha usado estricto habría visto:

    Global symbol "@numbers" requires explicit package name

    Y advertencias habría dicho:

    Odd number of elements in anonymous hash

    De inicio de todos tus scripts de perl con algo como:

    #!/usr/bin/perl -w
    use strict;

    (alternativamente use warnings;) y siempre vas a ser capaz de atrapar a estos tipos de errores de inmediato. Incluso experimentados Perl programadores hacen de vez en cuando. No hay realmente nunca ninguna buena razón para dejar de lado (a menos que usted está de golf que es).

    • +1 no le pida a un millón de personas cuando el equipo se puede decir que. use strict; use warnings;
    • Parece que alguien haya leído stackoverflow.com/q/8023959/725418, después de todo. =)
  3. 1

    tratar:

    @numbers = (1,4,5,6,7,8,9);
    foreach(@numbers) {
        print $_;
    }
    • ¿Has probado que con el cartel original del código? ¿Por qué no? El problema no es la instrucción loop, pero el tipo de la variable.
    • existen dos tipos de problemas. uno en el circuito en sí, uno con la declaración. mi respuesta se centró en el bucle y lo más corto alternativas hay. gracias por el comentario, aunque, he editado mi post!!!
    • print $_ es redundante.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Recent Articles

Python «set» con duplicados/elementos repetidos

Hay una forma estándar de representar un "conjunto" que puede contener elementos duplicados. Como yo lo entiendo, un conjunto tiene exactamente un cero o...

Python: generador de expresión vs rendimiento

En Python, ¿hay alguna diferencia entre la creación de un generador de objetos a través de un generador de expresión versus el uso de...

Cómo exportar/importar la Masilla lista de sesiones?

Hay una manera de hacer esto? O tengo que tomar manualmente cada archivo de Registro? InformationsquelleAutor s.webbandit | 2012-10-23

no distingue mayúsculas de minúsculas coincidentes en xpath?

Por ejemplo, para el xml a continuación <CATALOG> <CD title="Empire Burlesque"/> <CD title="empire burlesque"/> <CD...