# Aufspalten der Parameter (Headerzeile) in Spalten (@Cruise_Zeile) = split(/ /,$Cruise_Zeile_ges); for ($i=0;$i<=$#Cruise_Zeile;$i++){ print $i," ",$Cruise_Zeile[$i],"\n"; } #suchen der wichtigen Parameter (Tiefe, Datum, Wert) for ($i=0;$i<=$#Cruise_Zeile;$i++) { if ($Cruise_Zeile[$i] =~ /Depth /) {last} } $D_spalte=$i; ##### TIEFE###### $D_QV=$D_spalte+1; # die Zeitspalte steht 2 Spalten vorher! $Z_spalte=$D_spalte-2; ######## DATUM/ZEIT (Format 2009-01-21T11:00:00) ######### # Suchen nach den Parametern for ($i=$D_QV;$i<=$#Cruise_Zeile;$i++) { if ($Cruise_Zeile[$i] =~ /Temperature/) {$temp_index=$i;last} } for ($i=$D_QV;$i<=$#Cruise_Zeile;$i++) { if ($Cruise_Zeile[$i] =~ /Salinity/) {$sali_index=$i;last} } # aus @aktzeile ein 2-dim Feld machen foreach (@stationsdaten) { $zz=$_; @hilf = split(/ /,$zz); push(@aktzeile , [@hilf] ); } ######Zeitreihen fuer die einzelnen Parameter basteln # TEMPERATUR for ($l=0;$l<=$#stationsdaten;$l++) { # die Zeitreihe der Temperaturen befindet sich in push(@zr_temp,$aktzeile[$l][$temp_index]); } # Schleife durch alle Parameter machen und die QVs setzen # aktzeile wird immer komplett mit reingegeben # ZEIT TIEFE WERT @QV_neu=sub_QC_temp($Z_spalte,$D_spalte,$temp_index); for ($l=0; $l<=$#stationsdaten; $l++) {$aktzeile[$l][$temp_index+1]=$QV_neu[$l]}; # neue QVs setzen # wegschreiben der Zeilen, # vorher wurden die neuen QVs eingesetzt for ($i=0;$i<$#stationsdaten;$i++) { for ($l=0;$l<=$#Cruise_Zeile; $l++) { printf OUT_DATEI "%+s\t", $aktzeile[$i][$l]; } printf OUT_DATEI "%+s\n", $aktzeile[$#stationsdaten][$#Cruise_Zeile]; } close OUT_DATEI; ########## ende MAIN ################# #########EINLESEN DES REFERNZDATENSATZ und splitten nach Parameter (er liegt in folgender Struktur vor:) #Param Tiefe Monat mean N Sigma Min Max # TEMP; 2; 01; 4.18; 4235; 1.45; 0.73; 7.07 # TEMP; 2; 02; 2.70; 4056; 1.29; 0.14; 5.35 # TEMP; 2; 03; 2.40; 5135; 1.30; 0.19; 5.22 open(EINGANG,'<'.$dest_dir.$filename ) || die "can't open $filename: $!\n"; my ($bla, @klimatol); while() { $bla++ if /^\s/; push @klimatol, $_ if $bla; } print @klimatol, "\n"; my @datenz=(); foreach (@klimatol) { chomp $_; $_=~ s/ //g; ($Param,$Tiefe,$Monat,$mean,$N,$sigma,$Min,$Max)=split(/;/); push(@datenz,join(';',$Param,$Tiefe,$Monat,$mean,$N,$sigma,$Min,$Max, "\n")); } close EINGANG;