Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]9052[/thread]

Suchen von Unten nach Oben: Suchen von UNTEN nach OBEN (Seite 3)



<< |< 1 2 3 4 5 6 >| >> 58 Einträge, 6 Seiten
renee
 2007-06-04 15:10
#77110 #77110
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das einzige was sich verschiebt ist ja die Fehlermeldung an sich. Gibt es da eine Regel?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
bloonix
 2007-06-04 16:04
#77111 #77111
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
my ($sachnummer, $kundennummer, $seriennummer, $starttest, $endetest);
my ($status, $result, $fehler, @fehler, $date, $start_pos, $end_pos);

open my $fh, '<', 'data.txt' or die $!;

while (my $line = <$fh>) {
  if (!$starttest && $line =~ /(\d\d)\.(\d\d)\.\d\d(\d\d)\s+(\d\d):(\d\d):(\d\d)/) {
     $date = "$3$2$1";
     $starttest = "$3$2$1$4$5$6";
  } elsif (!$endetest && $line =~ /(\d\d):(\d\d):(\d\d)\s+(?: P\sA\sS\sS|F\sA\sI\sL)/x) {
     $endetest = "$date$1$2$3";
  } elsif (!$sachnummer && $line =~ /Sachnummer:\s*AATHD(\d+)\./) {
     $sachnummer = $1;
  } elsif (!$kundennummer && $line =~ /Kundennummer:\s*(\d+)/) {
     $kundennummer = $1;
  } elsif (!$seriennummer && $line =~ /Flexnummer:\s*([0-9\.]+)/) {
     $seriennummer = $1;
     $seriennummer =~ s/\.//g;
  } elsif ($line =~ /PASS/) {
     $start_pos = tell($fh);
  } elsif ($line =~ /FAIL/) {
     $end_pos = tell($fh);
  }
}

if ($end_pos) {
  $status = '01';
  $result = 'Failed';

  seek($fh, $start_pos, 0);
  my $hit;

  while (my $line = <$fh>) {
     chomp($line);
     last if $hit && $line =~ /^$/;
     $hit = 1 if $line =~ /^$/;
     push @fehler, $line if $hit;
  }

  $fehler = join(' ', @fehler);
  $fehler =~ s/\s+/ /g;

} else {
  $status = '00';
  $result = 'Passed';
}

close $fh;

print "{\@BATCH|$sachnummer||GOEPEL_BSCAN||KDSNR:$kundennummer|ICT||PB/PL_P|uqm161|||\n";
print "{\@BTEST|$seriennummer|$status|$starttest|||||n|n|$endetest||1|\n";
print "{\@RPT|$result}\n";
print "{\@RPT|$fehler}\n" if $fehler;


Bei mir funktioniert es und die Datei wird nicht komplett eingelesen.
Ich merke mir einfach die letzte Position von PASS und springe nachher
einfach nochmal dorthin.\n\n

<!--EDIT|opi|1180958789-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
Strat
 2007-06-04 18:43
#77112 #77112
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
wenn die Datei zeilenweise behandelt werden soll und geschwindigkeit nicht allzu wichtig ist, bietet sich auch das Modul CPAN:Tie::File an. Da wird der Dateiinhalt zeilenweise (oder was auch immer man als "zeilentrennzeichen" mitgibt) einem array zugewiesen.
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
yasukatakaya
 2007-06-05 10:32
#77113 #77113
User since
2007-05-31
68 Artikel
BenutzerIn
[default_avatar]
VIELEN VIELEN DANK OPI, das ist genau die Lösung, die ich gesucht habe, ich wollte auch so vorgehen, aber ich bin einfach nicht weiter gekommen, das nächste mal aber, weiss ich bescheid, Nochmals DANKE!!
Alle anderen danke ich auch für die hilfreichen Tipps!!

Gruss yasukatakaya
yasukatakaya
 2007-06-05 12:29
#77114 #77114
User since
2007-05-31
68 Artikel
BenutzerIn
[default_avatar]
Moin,
ich verstehe nicht so ganz, was zwischen diesen Zeilen passiert aus dem oberen Prog
Code: (dl )
1
2
3
4
5
6
7
8
9
while (my $line = <$fh>) {
chomp($line);
last if $hit && $line =~ /^$/;
$hit = 1 if $line =~ /^$/;
push @fehler, $line if $hit;
}

$fehler = join(' ', @fehler);
$fehler =~ s/\s+/ /g;


und das Prog gibt mir alles aus bis zu diesen Zeichen ======, ich möchte aber, dass es nur das ausgibt

Schiebekette defekt (IrShift)
unregelm&„áig, beginnend bei D111
Verbindung zwischen D111(TDO) und D160(TDI) pr&fen

Danke und ich hoffe ich gehe euch nicht auf die Nerven !
renee
 2007-06-05 12:48
#77115 #77115
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Also mit der Datei von oben wird das richtige ausgegeben...

Um sicher zu gehen, kannst Du noch
Code: (dl )
push @fehler, $line if $hit and $line !~ /^=+/;
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
yasukatakaya
 2007-06-05 14:01
#77116 #77116
User since
2007-05-31
68 Artikel
BenutzerIn
[default_avatar]
Danke renne dein Vorschlag hat geholfen aber was soll ich da schreiben, wenn sowas kommt
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
13:57:03 PASS
23.05.2007 13:57:03 Start Test PTS_CHK

PTS - Versions - Check
Urbooter in D151 : 48612.012.01 19Sep01 08:57 <-- OK

Fehlerhafte PTS-Version:
Booter in D151 (soll) : 48612.038.40 15Dec06 09:14
Booter in D151 (ist) : <-- FEHLER !!!


Fehlerhafte Version:
CPLD D160 (soll) : 01
CPLD D160 (ist) : 00 <-- FEHLER !!!

BKC D341 : _PTS48612.005.01 <-- OK

13:57:03 FAIL
===========================================================================
13:57:03 F A I L
=============================================================================
renee
 2007-06-05 14:46
#77117 #77117
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Was soll bei so einer Datei in der Ausgabe stehen?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
bloonix
 2007-06-05 18:06
#77118 #77118
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
hi yasukatakaya,

[quote=yasukatakaya,05.06.2007, 10:29]Moin,
ich verstehe nicht so ganz, was zwischen diesen Zeilen passiert aus dem oberen Prog[/quote]
das ist recht einfach! Um ein Perlskript zu verstehen, reicht es oft, es wie
ein Buch zu lesen... schau her...

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# für jede Zeile
while (my $line = <$fh>) {
  # schneide das Newline ab  
  chomp($line);
  # beende die Schleife wenn $hit WAHR ist UND die Zeile leer ist
  last if $hit && $line =~ /^$/;
  # setze $hit auf WAHR wenn die Zeile leer ist
  $hit = 1 if $line =~ /^$/;
  # schiebe die Zeile in das Array wenn $hit WAHR ist
  push @fehler, $line if $hit;
}

# verbinde jedes Element aus dem Array @fehler mit einem Whitespace
$fehler = join(' ', @fehler);
# ersetze doppelte Whitespaces durch ein einfaches
$fehler =~ s/\s+/ /g;


Die Schleife hat nur bei deiner ersten Datei funktioniert, weil zwischen dem
ersten PASS und dem ersten FAIL zwei Leerzeilen da waren. Wenn mehrere
Leerzeilen auftreten oder sich die Struktur verändert, dann passt meine
Suche natürlich nicht mehr genau. Ich glaube aber, dass ich jetzt weiß, wie
man es besser machen könnte... versuch mal dieses Codestück:

Code: (dl )
1
2
3
4
5
6
7
   while (my $line = <$fh>) {
     chomp($line);
     #last if $hit && $line =~ /^$/;
     last if $end_pos <= tell($fh);
     $hit = 1 if $line =~ /^\z/;
     push @fehler, $line if $hit;
  }


Ich weiß nicht, warum ich $end_pos nicht sofort benutzt habe, denn
eigentlich habe ich mir die Position von FAIL doch im ersten Schleifendurch-
lauf gemerkt...\n\n

<!--EDIT|opi|1181052480-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
bloonix
 2007-06-05 18:20
#77119 #77119
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=yasukatakaya,05.06.2007, 08:32]ich wollte auch so vorgehen, aber ich bin einfach nicht weiter gekommen[/quote]
Nur mal so als kleinen Hint. Eine Datei komplett einzulesen halte ich
grundsätzlich nie für eine gute Idee, es sei, man kann sicherstellen, dass
sie klein ist oder es ist eine Konfigurationsdatei, aber bei einem Logfile
sehe ich das schon als sehr kritisch an. Wir wollen ja nie so enden wie Java,
oder? Eine speicherfressende, swappende, leaking memory, oom
gehasste Applikation ;)\n\n

<!--EDIT|opi|1181053377-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
<< |< 1 2 3 4 5 6 >| >> 58 Einträge, 6 Seiten



View all threads created 2007-05-31 11:57.