wenn man sich gewisse sachen angewoehnen sollte, wieso dann nicht auch gleich nicht-globale dateihandles verwenden? Dann ist man von aussen noch unabhaengiger, kann auch auf local FH verzichten und koennte auch filehandles einfach an subroutinen uebergeben, z.B.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
open( my $FH, '<', $file )
or die "Error: can't open file '$file': $!\n";
while( my $fileX = <$FH> ) {
chomp($fileX);
if (-f $fileX) {
my @data = &ReadFile($fileX);
print "# Reading $fileX\n", @data;
} # if
} # while
close ($FH);
sub ReadFile {
my $filename = shift;
open( my $FH, '<', $filename )
or die "Error: couldn't open file '$filename': $!\n";
my @lines = <$FH>;
close( $FH ); # eigentlich ueberfluessig
return @lines;
} # ReadFile
versucht sowas mal ohne die lexikalischen filehandles...
das drei-parametrige open kann sicherer sein, weil man da nicht so einfach pipe-zeichen reinbringen kann, die dann was als programm ausfuehren... aber trotzdem sollte man mit taint arbeiten und ueberpruefen, ob $file einen erlaubten inhalt hat, wenn ein benutzer die moeglichkeit hat, den zu aendern