• Publicidad

Problema de hash (datos capturados en variable) a un hash

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

Problema de hash (datos capturados en variable) a un hash

Notapor tony » 2009-06-01 14:06 @629

Hola a todos. Tengo un detalle con un código;
tengo varios valores que voy a capturar en una variable; para exponer un poco el tema pongo el código base

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#! /usr/bin/perl

$valor='"TRA-4",915,"TRA-5",916';
%tigre1= ($valor);

print "\n EN tigre1 $tigre1";
print "\n EN tigre1 dato 1 $tigre1{'TRA-4'}";
print "\n ";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


En $valor se incrementará el valor N cantidad de veces, la idea es que a través de un hash hacer que el valor que está entre comillas sea la llave y el siguiente dato el valor. Al correrlo no me da ningún dato; me aparece en blanco. ¿Quién me puede corré?
tony
Perlero nuevo
Perlero nuevo
 
Mensajes: 1
Registrado: 2009-06-01 13:58 @623

Publicidad

Notapor creating021 » 2009-06-01 15:47 @699

Seguro que hay muchas formas, pero está parece ser una:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use strict;
use Data::Dumper;

# Las comillas dobles sobran.
my $valor = 'TRA-4,915,TRA-5,916';
# Como normalmente los hashes son relacionales...
# y esa es la idea, usamos un array y split
my %tigre;
my @valores = split /,/, $valor;
for ( my $i = 0; $i < $#valores; $i += 2) {
    $tigre{ $valores[$i] } = $valores[ $i + 1 ]
}

# Esto imprime los valores
print Dumper( \%tigre );
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Saludos y bienvenido.
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Notapor explorer » 2009-06-01 18:40 @820

Bienvenido a los foros de Perl en Español, tony.

Haces mal la inicialización del diccionario. Es así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl

%valor=("TRA-4", 915, "TRA-5", 916);

print "\n EN valor dato 1 $valor{'TRA-4'}";
print "\n ";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Avanzado

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados