Thread sub aus sub aufrufen ... (9 answers)
Opened by jan999 at 2009-08-24 18:37

jan999
 2009-08-26 18:30
#124872 #124872
User since
2009-04-02
109 Artikel
BenutzerIn
[default_avatar]
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
D:\DATEN\JAN\openstreetmap\Perl_4osm\postkasten>perl post.pl postkasten.txt
"my" variable $icon masks earlier declaration in same scope at post.pl line 41.
"my" variable $collection_times masks earlier declaration in same scope at post.
pl line 42.
"my" variable $collection_times masks earlier declaration in same scope at post.
pl line 43.


==> Sind doch von mir mit MY deklariert.

Quote
syntax error at post.pl line 38, near ")
{"
syntax error at post.pl line 45, near "}else"


==> es ist doch ein IF-statement definiert und auch die Klammern sind da !

Quote
Global symbol "$out" requires explicit package name at post.pl line 51.
Global symbol "$point" requires explicit package name at post.pl line 51.
Global symbol "$title" requires explicit package name at post.pl line 51.
Global symbol "$desc" requires explicit package name at post.pl line 51.
Global symbol "$icon" requires explicit package name at post.pl line 51.
Global symbol "$icon_size" requires explicit package name at post.pl line 51.
Global symbol "$iconOffset" requires explicit package name at post.pl line 51.
Global symbol "$count" requires explicit package name at post.pl line 53.
syntax error at post.pl line 55, near "}"
post.pl has too many errors.


==> 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)

View full thread sub aus sub aufrufen ...