Cuestión : El valor fijo de la lectura/de la escritura coloca el Perl de los archivos n

Hola,
I que intenta leer un archivo que tiene 6 dos puntos. Los datos aparecerán en exactamente en las posiciones del same
colon. Intenté leer para arriba en búsqueda y decir pero no encontré que un buen explaination.
Johanne1

here es 3 líneas de la entrada file.
743 Hafslund TÉLÉKOM Nettjene 02011 20090616130000 20100208152959 comunicaciones ASA 02011 de la zanahoria de I
704 20100208153000 99991231000000 I
729 TDC COMO - 729 02090 20080609083000 99991231000000 primeros dos puntos de I

The son espacios en blanco y se pueden tomar out.
There son 6 dos puntos pero cuidan solamente sobre los primeros 5 dos puntos, es decir los dos puntos pasados se pueden tomar salida de out.
Desired tienen 2 requisitos; el
1. separa los dos puntos por una cierta clase de los dos puntos 5 del ejemplo semi-colon.
2. del delimitador es una fecha si comienza por 9999 entonces substituye por nada si no lo hace la fecha el start
with 9999 entonces no substituye it.

desired hecho salir:

743; Hafslund TÉLÉKOM Nettjene; 02011; 20090616130000; 20100208152959;
704; Comunicaciones ASA de la zanahoria; 02011; 20100208153000; ;
729; TDC COMO -729; 02090; 20080609083000; ; el


I escribió una escritura a la descifración entre las palabras y las letras y los espacios pero hace el not
work debido a los dos puntos 2 que es un nombre que puede incluir la escritura de number.
The abajo da la respuesta correcta para las primeras 2 líneas pero la línea 3 es ouput partido de incorrectly.

incorrect para la línea 3:
729; TDC COMO -; 729; 02090; 20080609083000; ; el

The en segundo lugar 729 es ot de la parte que el name.

It fue sugerido a mí a de posición fija usado puesto que cada elemento de datos aparecerá siempre el in
the el mismo colon.
Start que cuenta de 0.
example: los dos puntos 1 comienzan en el 7mo comienzo de los dos puntos 2 del position
en el 12mo comienzo de los dos puntos 3 del position
en el 36.o comienzo de los dos puntos 4 del position
en el 48.o comienzo de los dos puntos 5 del position
en 67.o position.

Is allí cualquier manera que pueda almacenar fácilmente el contenido de cada colonn usar los dos puntos position.

Here soy mi escritura basada en espacios, los decimales y las palabras pero nunca trabajarán debido a el
colon 2 contienen un título que tenga palabras y pudieron tener un number.

$infile = “input.txt”;
$outfile = “output.txt”;
open (OUTF, “>$outfile”) || morir “no puede abrir $outfile”;
open (INF, “<$infile”) || morir “no puede abrir $infile”;
{
del
while () $tmp = $_; chomp del
($tmp);
$tmp=~ s/^ \ s+//; el @arr del
= partió (/\ s+/, $tmp);
$temp = "";
para ($i = 0; <= $#arr de $i;
{
de $i++) si/\ d+/) {
del =~ (de $arr [$i] si ((&& del eq de $i ($#arr - 1)) ($arr [$i] =~/^9999/))   {$temp = $temp. ” \; “;}

{$temp = $temp.$arr [$i]. ” \; “;}
{
del elsif del
del
} "" del ne (de $arr [$i+1]) si/\ d+/del =~ (de $arr [$i+1]) {$temp = $temp.$arr [$i]. ” \; “;}
otro {$temp = $temp.$arr [$i].” “;}impresión OUTF “$temp \ n” del
del
del
}};
close (INF) del
};
close (OUTF); el

Thanks por adelantado para su pieza difícil de advice.




the es los segundos dos puntos que son un nombre que puede tener letras y numera el and
have vario el words
class= del

Respuesta : El valor fijo de la lectura/de la escritura coloca el Perl de los archivos n

Usted puede utilizar partir en un nivel del carbón de leña y empalmar para hacer el truco… Apenas recordar que los elementos empalmados de arsenal están quitados así que cambiar de puesto su “indicador” por consiguiente. Test.txt parece esto en mi caso:
pat1 patrón pattern2
dfadafda del pappape xxd1
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
¡#! /bin/perl
#
utilizar terminante;
utilizar las advertencias;


abrir IH, “;
cerrar IH;

foreach mi $line (@data) {
 mi @spl = partió (/, $line);
 mi @col1 = @spl del empalme, 0.4; #positions 2-9;
 mi @col2 = @spl del empalme, 1.7; #positions 2-9;
  
 impresión @col1; 
 “\ n” de la impresión;
 impresión @col2; 
 “\ n” de la impresión;
}
Otras soluciones  
 
programming4us programming4us