Thread filehandleproblem (13 answers)
Opened by Noisebreath at 2006-09-20 15:36

Noisebreath
 2006-09-20 15:36
#70108 #70108
User since
2006-04-14
72 Artikel
BenutzerIn
[default_avatar]
Code: (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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
foreach my $ele (@documentlist){
    if(@{$ele->child()}){
        if(!@{$ele->parent()}){
            my $file = ${$ele->name()}.'.html';
            open(my $fh,'>',$file) or die $!;+
            my $string = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
           "http://www.w3.org/TR/html4/loose.dtd"><html><head><title>'.$file.'</title></head><body>'.
           '<a href="'.${$ele->name()}.".html".'">Zurück</a><br/><br/><br/> <table border>';
        }else{
            my $file = ${$ele->name()}.'.html';
            open(my $fh,'>',$file) or die $!;+
            my $string = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
           "http://www.w3.org/TR/html4/loose.dtd"><html><head><title>'.$file.'</title></head><body>'.
           '<a href="'.@{$ele->parent()}[0].".html".'">Zurück</a><br/><br/><br/> <table border>';
        }

           my $header = ${$ele->child()}[0];
           
            # erzeuge headerzeile
           foreach my $ele2 (@documentlist){
           
               if($header eq ${$ele2->name()}){
                 
  
                 
  my %hash = %{$ele2->spalteninfo()};
                 
     my @sorted = sort keys %hash;
               
     $string .= '<tr>';
                 
     for my $key(@sorted){
                     
     $string .= '<th>'.$key.'</th>';
                 
     }
                 
     $string .= '</tr>';
                 
     last;
                 
 }
            }
            # erzeuge spalteninformationszeilen
            foreach my $child (@{$ele->child()}){
               
 foreach my $ele3 (@documentlist){
               
     if($child eq ${$ele3->name()}){
               
     # Wenn keine Blätter
               
         if(@{$ele3->child()}){
               
             my %hash = %{$ele3->spalteninfo()};
                 
             my @sorted = sort keys %hash;
                 
             $string .= '<tr>';
                 
             for my $key(@sorted){
                 
                  if($key eq "Titel"){
                 
                  $string .= '<td><a href="'.${$ele3->name()}.".html".'">'.$hash{$key}.'</a></td>';
                 
               
  }else{
                   
              $string .= '<td>'.$hash{$key}.'</td>';
                   
              }
                 
             }
                 
             $string .= '</tr>';
                 
         }else{
                 
         # Wenn Blätter
               
             my %hash = %{$ele3->spalteninfo()};
                 
             my @sorted = sort keys %hash;
                 
             $string .= '<tr>';
                 
             for my $key(@sorted){
                 
                  if($key eq "Titel"){
                 
                  $string .= '<td><a href="'.${$ele3->name()}.".".${$ele->doc_format()}.'">'.$hash{$key}.'</a></td>';
                 
               
  }else{
                   
              $string .= '<td>'.$hash{$key}.'</td>';
                   
              }
                 
             }
                 
             $string .= '</tr>';
                 
         }
               
     }
               
 }
            }
            $string .= '</table></body></html>';

#########Problem    print $fh $string;
            close $fh or die $!;
    }
}


er gibt mir die fehlermeldung:

print<> on closed filehandle $fh at main.pl
Bad file descriptor at etc..

Ich verstehe nicht wieso er proble macht. Die Fehlermeldung gibts erst seitdem ich ne if abfrage gemacht hab um dann das filehandle zu öffnen. es sollte doch eigentlich kein unterschied machen oder?\n\n

<!--EDIT|Noisebreath|1158752234-->

View full thread filehandleproblem