Estoy aprendiendo Perl, y he escrito un pequeño programa que no acaba de funcionar del todo. El fichero de entrada simple.tr muestra los diferentes eventos de una simulación. Debido a que ocurren muchos en momentos muy puntuales, quiero seleccionar eventos para hacer una gráfica, que sea entendible. Así que lo que hay que hacer es a través de una variable llamada paso, ir incrementando el tiempo y seleccionando eventos.
A continuación os enseño un par de líneas del fichero de entrada, y el código que he escrito.
Espero vuestra ayuda y comentarios.
Muchas gracias.
José
Fichero de entrada:
- Código: Seleccionar todo
D 76.430622539 _0_ RTR CBK 11 tcp 80 [0 0 0 800] ------- [0:0 1:0 32 1] [0 0] 0 0
s 81.503053035 _1_ RTR --- 17 message 32 [0 0 0 0] ------- [1:255 -1:255 32 0]
r 81.503945197 _0_ RTR --- 17 message 32 [0 ffffffff 1 800] ------- [1:255 -1:255 32 0]
Código
Using perl Syntax Highlighting
$file1 = "simple.tr";
$file2 = "mull.txt";
$file3 = "salida.txt";
open(DATEI, "< $file1") || die "Fehler beim lesen der $file1.";
open(DATEI2,"> $file2") || die "Fehler beim lesen der $file2.";
open (DATEI3,"> $file3") || die "Fehler beim lesen der $file3.";
$paso = 0.1;
$inicio= 0;
while(<DATEI>)
{
chomp;
@line = split (' ',$_);
if ($inicio== 0){
$time = $line[1];
$inicio = 1;
}
if ($line[0] eq "r" && $line[3] eq "MAC" && $line[2] eq "_1_")
{
if ($time - $line[1] < 0.0001)
{
print DATEI3 "$line[1] $line[2] $line[7]\n";
$time = $time + $paso;
}
else
{
print DATEI2 "@line\n";
}
}
}
close (DATEI) || die "Fehler beim Schliessen: $file1";
close (DATEI2) || die "Fehler beim Schliessen: $file2";
close (DATEI3) || die "Fehler beim Schliessen: $file3";
$file2 = "mull.txt";
$file3 = "salida.txt";
open(DATEI, "< $file1") || die "Fehler beim lesen der $file1.";
open(DATEI2,"> $file2") || die "Fehler beim lesen der $file2.";
open (DATEI3,"> $file3") || die "Fehler beim lesen der $file3.";
$paso = 0.1;
$inicio= 0;
while(<DATEI>)
{
chomp;
@line = split (' ',$_);
if ($inicio== 0){
$time = $line[1];
$inicio = 1;
}
if ($line[0] eq "r" && $line[3] eq "MAC" && $line[2] eq "_1_")
{
if ($time - $line[1] < 0.0001)
{
print DATEI3 "$line[1] $line[2] $line[7]\n";
$time = $time + $paso;
}
else
{
print DATEI2 "@line\n";
}
}
}
close (DATEI) || die "Fehler beim Schliessen: $file1";
close (DATEI2) || die "Fehler beim Schliessen: $file2";
close (DATEI3) || die "Fehler beim Schliessen: $file3";
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4