Thread zwei fragen zu fehlern - datei schreiben und ??? (4 answers)
Opened by jan99 at 2009-02-19 09:38

Struppi
 2009-02-19 10:48
#118978 #118978
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Code (perl): (dl )
for ($j=2;$j<=$countcol;$j++){

Solche Schleifen sind immer Verdächtig. Einmal sind diese so in Perl nicht üblich, da Perl bessere Möglichkeiten bietet um auf alle Elemente eines Array zu zugreifen. Dann ist in so einem Fall <= meistens falsch.

Ich würde die Schleife in etwa so machen (ungetestet):
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
my @colnames = qw/name    megalit_type    moved   place   village    historic /;
my $err_msg = '';
while(my $dataline=<$fh>){
        chomp($dataline);
        
        $line_count++;
        
        #aufsplitten der csv-datei
        
        my @value = split(/;/,$dataline);
        
        #create node-data
        my $lat = shift @value;
        my $log = shift @value;
        
        #lat and log define?
        if (defined $lat && defined $log){
                #output node-header
                $object_id--;
                print FILEHANDLE sprintf "  <node id='%s' action='modify' visible='true' lat='%s' lon='%s'>\n", 
                $object_id, $lat, $log;
                # get column-values and set to node
                foreach my $col(@colnames) {
                        my $value = shift @values;
                        next if !defined $value || length $value < 1;
                        print FILEHANDLE sprintf "<tag k='%s' v='%s' />\n", $col, $value;
                }
                $point_count++;
                print FILEHANDLE "  </node>\n";
                
                } else {
                        $err_msg .= "missing lat- and/or log-value in line $line_count\n";
        }#endif - &&

}# end-while

View full thread zwei fragen zu fehlern - datei schreiben und ???