• Publicidad

Lectura de archivos

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Lectura de archivos

Notapor vane_22 » 2010-11-11 15:03 @669

Hola a todos, soy nueva en Perl, y necesito un script que me permita leer un archivo de texto; leer los 4 primeros caracteres de cada línea, y luego decirle que después de que encuentre un carácter "X" deje de mostrar las líneas. La primera parte de leer los 4 primeros caracteres ya la tengo; me falta darle la orden para que deje de mostrar si encuentra el carácter "X". No sé si me explico bien. Les dejo el script que tengo hasta el momento.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.   #!/usr/bin/perl
  2.  
  3.   my $entrada="10112010";
  4.  
  5.   open (ENTRADA,"<$entrada") || die "ERROR: No puedo abrir el fichero $entrada\n";
  6.  
  7.   while ($linea=<ENTRADA>)
  8.   {
  9.    @elementos=split(/ /,$linea);
  10.  
  11.     foreach $elementos (@elementos)
  12.     {
  13.         $str = substr($elementos,0,4);
  14.         if($str != "    ")
  15.         {
  16.            print "OLA: $str\n";
  17.         }
  18.     }
  19.  
  20.     #if  ()
  21.     }
  22.  
  23.   close (ENTRADA);
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

donde "10112010" es el archivo que leo que contiene lo siguiente:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
REPT 4



 POS    CALLS TOTAL TOTAL TOTAL TOTAL   DN  INC   DN   OUT   #-XFER  MANNED



  ID    ANSWD   DCP  HDCP   PCP  WAIT  INC TIME  OUT  TIME  IDN  ACD   TIME







ACD DN 4900    







ACD DN 5300    



0422        0     0     0  2112  1488    0    0    0     0    0    0   3600



01



0423        2   214     0     0  3232    0    0    1   154    0    0   3600



01



0421        0     0     0     0  3116    1   48    2   436    0    0   3600



01







ACD DN 8686    



8462       13  1388   206     2  1436    2  408    2    46    0    1   3474



01



8463       12  1466   216     0  1408    2  214    4   328    0    2   3600



01



6341       14  1670     2     0  1526    0    0    0     2    0    1   3198



01



8449        0     0     0  2090     0    0    0   36  1510    7    0   3600



01



8447       13  1284     0   208  1872    2  236    0     0    0    0   3600



01



8440       15  1052   214   186  1804    1  144    5   212    0    2   3600



01



8441       10  1632    60     0  1184    0    0    1    64    0    2   2936



01



8442       12   260     6    98  2952    0    0    9   284    2    1   3600



01



8403       12  1876     4     0  1194    1    8    1    26    0    1   3266



01



8981        6  1390     4   598  1416    3  192    0     4    0    2   3600



01



8982        8  1040   170   546  1518    2  432    0     0    0    0   3600



01



6340        5  1020     8   342  1272    3  450    5   516    0    1   3600



01







ACD DN 8636    



8445        7   790   516     0  1172    2  334    2    82    0    1   2834



01



8461       11   706   206   328  1634    0    0    2   358    0    2   3202



01



8446       13  1436   292    38  1816    0    0    1   242    0    3   3582



01



8443       16   718   370     4  1666    0    0    2   200    0    2   2758



01



8444       15  1214     0     0  2060    0    0    0     0    0    0   3274



01



8421       10   632     0    94  1372    1  184    0     0    0    0   2732



01



8464       12   298    94    52  1802    1   38    9   176    0    2   2712



01



8457        6   806     4     0   812    0    0    0     4    0    1   1622



01



8460       10   426     8   308  1908    0    0    0     8    0    1   2700



01



8600       12   454    74   942  1358    2  122    1    80    0    1   3256



01







ACD DN 8620    



8406       19   450   192     0  2556    0    0    0   184    0   15   3198



01







ACD DN 8550    







ACD DN 7184    







ACD DN 4000    



7006       30   458    74    68  2832    1  168    0    74    0   16   3600



01



7007       24   412   400     0  2582    1   28    8   462    0   16   3600



01



7008       24   430   214    58  2438    1  186    9   368    0   14   3600



01



4446       16   460   188    64  2144    0    0    3   132    0    9   2884



01







ACD DN 7800    







ACD DN 5555    



7200        5   148    36     0  3416    0    0    0    28    0    2   3600



01



7100        1    66    36   374  2472    4   70    2   222    0    1   3204



01



1500        2    10     0     0  3394    0    0    9   164    0    0   3568



01



4604        3   186    48    76  3238    0    0    1   100    0    2   3600



01







ACD DN 5917    



7406        1   182     0     0  3264    1   54    1   100    0    0   3600



01



7409        1    72     0     0  2876    3  196    5   454    1    0   3600



01







ACD DN 7000    







ACD DN 1400    







ACD DN 1616

---------------------------------------------------------------------------



 36       360   411    61   143  1204   34   59  121   117   10  101   1987


____________________________________________________________________________
   
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Y lo que no quiero que se muestre es la última linea, que es lo que viene después de "------", entonces le quiero que déspues de que encuentre "------" deje de mostrar.

Si alguien pudiese ayudarme, por favor.
Gracias.
vane_22
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2010-11-11 14:47 @657

Publicidad

Re: Lectura de archivos

Notapor explorer » 2010-11-11 15:13 @675

Bienvenida a los foros de Perl en Español, vane_22.

Tienes un error en la línea 14. Para comparar cadenas de caracteres, no puedes usar comparadores numéricos. Debes cambiar el '!=' por 'ne'.

En cuanto a qué hacer para que termine de leer en cuanto llegue a la línea de guiones, es muy fácil. Basta con insertar esta línea:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.   last if $linea =~ /^-/;   # salir del bucle si la $linea comienza por un '-'
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: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Lectura de archivos

Notapor vane_22 » 2010-11-11 16:04 @711

Muchas gracias, explorer, me funcionó perfectrijillo.
vane_22
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2010-11-11 14:47 @657


Volver a Básico

¿Quién está conectado?

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