Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Mundo Perl » Intermedio » problemas $_ Responder al tema
Nuevo tema


Página 1 de 1  [ 6 mensajes ] 
 
Nota 2005-05-16 17:39 @777

Perlero Nuevo
Registrado: 2005-04-22 13:29 @603
Mensajes: 6
problemas $_
si estoy leyendo el registro o la variable $_ por la cual me estan llegando datos .... de la siguiente manera

A111,B222,C333,D444.....H888; y llega una caracter a la vez ...como haria ...para ir guardando estos datos y despues calsificarlos con A111 en una varialble y B222 en otra y asi con las demas...que piensa uds ..

oigo sugerencias ayuda ...ya se me acabaron las ideas ...

tomando en cuenta que $_ cambia cierto tiempo el script es
#!/usr/bin/perl -w


use lib "/my/perl_directory/lib/perl5/site_perl/5.8.3/";
use IO::Socket::INET6;
$host="150.187.25.206";
my $dat1;
my @arreglo;
my $dat2;
my $dat3;
my $dato;
my $count;
my $volt1;
$remote = IO::Socket::INET6->new( Proto => "tcp",
PeerAddr =>$host,
PeerPort => 8000,
);
unless ($remote) { die "cannot connect to $host" }
$remote->autoflush(1);
while ( <$remote> )
{

$dat1=$_;
print"$dat1"; # aca estoy busca
if(/A/){
$dat2="primer dato a"."$dat2"." $_";
print"$dat1\n";

}

}

print"222 $dat1\n ";
if (/B/)
{
print "en B\n";
print "$dat1\n";
}
print "333 $dat1\n";
if (/C/)
{
print "en C\n";
print "$dat1\n";
}

print "despues \n";

#open(MUESTRA,"|/usr/bin/rrdtool update /home/golan/datos/temperatura.rrd N:$escritorio:$exterior ");
#close(MUESTRA);

}
close $remote;

_________________
gg gl hf


Nota 2005-05-16 20:50 @909
Avatar de Usuario
Creador de Perl en Español
Registrado: 2003-10-15 16:52 @744
Ubicación: México
Mensajes: 1163
Hola:

No entiendo muy bien lo que buscas, pero checa este ejemplo:

Código:
#!/usr/bin/perl -w

use strict;


#NUESTRO STRING DE CARACTERES
my $string = "A11111B222C333D44E5555F666G7777H88888";

my %Datos;


   #UNA MEMORIA
   my $memoria = '';

   #HACEMOS UNA ITERACIÓN CARACTER POR CARACTER
   foreach(split //, $string){

        if(/(\D)/){
           $Datos{$_} = '';
           $memoria = $1;
        }

        elsif(/(\d)/){
           $Datos{$memoria} .= $1;
        }

   }


#YA TENEMOS NUESTRO HASH DE DATOS COMPLETO
#AHORA LO IMPRIMIMOS
for my $key(sort keys %Datos){
     print "$key: $Datos{$key}\n";
}


Lo que hace es que recibe uno a unos los caracteres que tiene $string, así como tu dices que recibes los datos.

Entonces creamos una hash que va a tener un llave diferente dependiendo de la letra (A,B,C,D...etc), a la cual vamos agregando al valor los números que se reciban hasta llegar a la siguiente letra.

Por ejemplo, al final de recibir los datos uno a uno, tendrás un hash con la siguiente estructura:

Código:
$Datos{'A'} = '11111'
$Datos{'B'} = '222'
$Datos{'C'} = '333'
$Datos{'D'} = '44'
$Datos{'E'} = '5555'
$Datos{'F'} = '666'
$Datos{'G'} = '7777'
$Datos{'H'} = '88888'


Así puedes hacer una iteración for para desplegar los datos, o imprimir cada letra independientemente.

Es la solución que se me ocurre por lo que entiendo que necesitas, ya nada más sería cuestión que lo adaptes a tus necesidades.


SALUDOS

_________________
Uriel Lizama Perl programmer fundador de Perl en Español


Nota 2005-05-23 09:39 @444

Perlero Nuevo
Registrado: 2005-04-22 13:29 @603
Mensajes: 6
gracias por tu respuesta ta muy buena ....

_________________
gg gl hf


Nota 2011-09-21 16:25 @726
Avatar de Usuario
Perlero Nuevo
Registrado: 2011-05-11 17:57 @790
Mensajes: 15
Re: problemas $_
Hola, buen día, una pregunta que me surgió: ¿la variable $_ viene ligada a todas los loops o solo a los foreach o por el contrario, no tiene relación directa con los bucles? Gracias de antemano.

_________________
personal: debian 6 (squeeze) with perl v5.10.1
laboral: canaima 3 with perl v5.10.1


Nota 2011-09-21 18:44 @822
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10271
Re: problemas $_
La variable $_ se utiliza cuando no quieres usar una variable normal, tanto en bucles como en buena parte de los operadores y funciones de Perl.

De hecho, en muchas situaciones, tampoco aparece.

Por ejemplo:
Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. foreach (@amigos) {
  2.     say;
  3. }

El bucle "usa" la variable $_ para guardar a cada uno de nuestros @amigos, y say() sabe que, si no le decimos qué, usará el valor de $_ para sacarlo a pantalla.

_________________
JF^D Perl programming


Nota 2011-09-22 07:32 @355

Perlero Frecuente
Registrado: 2011-01-22 12:56 @580
Mensajes: 118
Re: problemas $_
> ir guardando estos datos y después clasificarlos con A111 en una variable y B222 en otra y así con las demás...

También puedes usar push() y meter todos los datos en una sola variable @var, luego accedes a cada componente de la lista de modo independiente.


Responder al tema  [ 6 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO