Thread sub aus sub aufrufen ...
(9 answers)
Opened by jan999 at 2009-08-24 18:37
Moin !
ich habe jetzt einmal die beiden Zeilen ergänzt um die Fehler besser zu finden. Aber leider kann ich nicht alles beseitigen und würde mich freuen, wenn mir einer weiterhelfen kann. Meine Gedanken zu den einzelnen Meldungen habe ich unten eingefügt - oder auch wo ich meine es berücksichtigt zu haben. Primär geht es mir vorerst darum die Funktion fehlerfrei zu bekommen. Was die Rückgabe der Werte aus der Unterfunktion ist dieses wahrscheinlich von mir zu realisieren, da ich dieses mit einem kleinen Testbeispiel schon habe nachvollziehen können. Quote ==> Sind doch von mir mit MY deklariert. Quote ==> es ist doch ein IF-statement definiert und auch die Klammern sind da ! Quote ==> Auch diese Variablen sind der Zeile mit dem SPLIT-Commando mit einem MY versehen ! Jetzt noch der Code wie ich diesen zur Zeit habe. Die Musterdaten stehen ja oben. Gruß Jan :-) 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 83 84 85 86 87 88 89 90 91 #!/usr/bin/perl use strict; use warnings; # Parser einbinden my $osmolt_file = $ARGV[0]; my $result_file = "newfile.txt"; my $count_postboxes = 0; my $count_ctimes = 0; InitFilter(); # Filter anlegen sub InitFilter { #Filterdatei oeffnen open( FH, $osmolt_file ) or die( "$osmolt_file: $!" ); open (my $out, ">", $result_file) || die ("Can't open html output file: ".$result_file) ; my $count = 0; my $desc = ""; #fuer jede Zeile while( <FH> ) { chomp; # Newlines loeschen s/^\s+//; # fuehrende Leerzeichen entfernen s/\s+$//; # nachfolgende Leerzeichen entfernen next if( /^#/ ); # Kommentare ueberspringen next if( /^s*$/ ); # Leerzeilen ueberspringen #Zeile auftrennen my($point,$title,$collection_times,$icon,$icon_size,$iconOffset) = split( /\t/, $_, 7 ); $count_postboxes##; if (length $collection_times > 0 ) { my $code = "<table width=\"100\" border=\"0\" cellpadding=\"0\" cellspacing=\"1\">"; $icon = "postbox_collection.png"; CreateCollectionTimeTable($collection_times); $desc=$collection_times; $count_ctimes++; }else{ $desc="<i>keine Leerungszeiten vorliegend!</i>"; } print $out $point."\t".$title."\t".$desc."\t".$icon."\t".$icon_size."\t".$iconOffset."\n"; #Anzahl der eingelesenen Zeilen $count++; } close( FH ); close $out; print $count." Zeilen bearbeitet"; print $count_postboxes." Postkaesten"; my $prozent_collection = 100 / $count_postboxes * $collection_times; print $collection_times." mit Leerungszeiten (".$prozent_collection.")"; } #erstellen der Tabelle mit den Leerungszeiten sub CreateCollectionTimeTable { my $ctimes = shift ; my(@days) = split( /;/, $ctimes ); foreach my $day (@days){ $_ = $day; s/^\s+//; # fuehrende Leerzeichen entfernen s/\s+$//; # nachfolgende Leerzeichen entfernen my($dayname,$daytime) = split( / /, $_ ); $code .= "<tr><td>".$dayname."</td><td>".$daytime."</td></tr>"; print "|".$dayname."| - |".$daytime."|\n"; $code .= "</tr>"; } #Tabellen-Abschluss $code .= "</table>"; print "------------------------\n"; print $code."\n"; Modedit: Code bitte in CODE-Tags stellen! Last edited: 2009-08-26 18:46:30 +0200 (CEST) |