PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : lesen von zwei files



mr-sansibar
02-06-2006, 09:21
hallo!
ich gebe in die komandozeile 2 parameter zum lesen von 2 files an.
wenn es fertig ist mit dem einem file zu lesen dann solle er mit dem zweiten file weiter machen. dabei soll er für jedes file etwas anderes machen.
ich gebe ein teil vom script als bespiel:

ist es auch möglich ais 2 while-schleifen ein einziges zu machen, hab eleder bisher keine lösung gefunden. bin leider noch anfänger.

danke für eure hilfe


while ( <dat1> ) {


$Datum = $_ if m/Date: /;
$Zeit = $_ if m/Time: /;
$errorFound = 1 if /Severity: Error/;

$lines .= $_;

#generate a new hash-hey
if ($Zeit && $Datum && $errorFound){
$Zeit =~ s/\D//g;
$Datum =~ m/(\d+)\.(\d+)\.(\d+)/g;
$dt = $3.$2.$1.$Zeit."_".$ARGV[0];
$Datum = $Zeit = "";
}

#put the error snippel in hash
if (/^\s*$/ or eof) {

$hash{$dt} = $lines if $errorFound;
$errorFound = 0;
$lines = ''
}
}

close dat1;

while ( <dat2> ) {


$Datum = $_ if m/Date: /;
$Zeit = $_ if m/Time: /;
$errorFound = 1 if /Severity: Error/;

$lines .= $_;


#generate a new hash-hey
if ($Zeit && $Datum && $errorFound){
$Zeit =~ s/\D//g;
$Datum =~ m/(\d+)\.(\d+)\.(\d+)/g;
$dt = $3.$2.$1.$Zeit."_".$ARGV[1];
$Datum = $Zeit = "";
}


#put the error snippel in hash
if (/^\s*$/ or eof) {

$hash{$dt} = $lines if $errorFound;
$errorFound = 0;
$lines = ''
}
close dat2;

SeeksTheMoon
05-06-2006, 10:29
sicher geht eine Verkleinerung des Codes.
a) Du kannst den doppelten Code schonmal in Funktionen schreiben, falls Du beide Schleifen lässt.
b) Du baust um die erste Schleife eine weitere Schleife, die über die <datX> iteriert. In der inneren kannst Du dann eine Abfrage einbauen, ob Datei2 dran ist und in dem Fall noch weitere Sachen machen.