Schrift
[thread]754[/thread]

Datei Handle einer funktion übergeben



<< >> 3 Einträge, 1 Seite
mr-sansibar
 2006-06-16 12:24
#8037 #8037
User since
2006-04-13
90 Artikel
BenutzerIn
[default_avatar]
Hallo Ich möchte einer Funktion ein Datei Handle übergeben.
bekomme aber eine Fehlermeldung:

Bareword "OUT" not allowed while "strict subs" in use at C:\trxLogParser_2006
Execution of C:\trxLogParser_2006-06-14.pl aborted due to compilation errors.

Code: (dl )
1
2
3
4
5
6
7
8
my $write_file = "c:/trxlogfile.txt";
open(OUT, ">$write_file" ) || die "Kann die Datei nicht erzeugen: $!";

foreach (@ARGV) {
@array_result=work_with_file($_, OUT);
}

close(OUT);
Dubu
 2006-06-16 12:44
#8038 #8038
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Du könntest den Typeglob *OUT übergeben (direkt oder per Referenz), aber seit Perl 5.6 ist es möglich und auch empfohlen, direkt mit Filehandle-Referenzen zu arbeiten:
Code: (dl )
1
2
3
4
5
open (my $out, '>', $write_file) or die "Kann $write_file nicht erzeugen: $!";
foreach (@ARGV) {
   @array_result = work_with_file ($_, $out);
}
close $out;


Alternativ kannst du eines der Standard-Module FileHandle oder IO::File benutzen, um mit Filehandle-Objekten zu arbeiten.


Übrigens: Wenn man etwas mit allen Dateien machen möchte, die auf der Kommandozeile übergeben wurden, dann kann man sich oft das iterieren über @ARGV sparen und stattdessen einfach den magischen Diamantoperator "<>" nutzen; der liest alle Zeilen aus allen angegebenen Dateien nacheinander ein.
mr-sansibar
 2006-06-16 13:35
#8039 #8039
User since
2006-04-13
90 Artikel
BenutzerIn
[default_avatar]
Vielen Dank hat geklappt.
<< >> 3 Einträge, 1 Seite



View all threads created 2006-06-16 12:24.