Thread Verzeichnis öffnen und Dateien durchsuchen
(16 answers)
Opened by yasukatakaya at 2007-06-06 12:39 Code (perl): (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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 #!/usr/bin/perl use strict; use warnings; use File::Spec; my $dir = $ARGV[0]; open DIR, $dir or die $!; while( my $entry = readdir DIR ){ my $file = File::Spec->catfile( $dir, $entry ); check_datei($file); } closedir DIR; sub check_datei{ my ($datei) = @_; my ($sachnummer, $kundennummer, $seriennummer, $starttest, $endetest); my ($status, $result, $fehler, @fehler, $date, $start_pos, $end_pos); open my $fh, '<', $datei 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 $end_pos <= tell($fh); if ($line =~ /^\z/){ $hit = 1; } if ($hit){ push @fehler, $line; } } $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; } Damit es noch schöner wird, sollte man vielleicht noch mehr Subroutinen daraus machen... 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/ |