So drucken Sie in zwei Dateien auf einmal?
Ich habe Probleme dabei, diese Zeile von code zu arbeiten:
for my $fh (FH1, FH2, FH3) { print $fh "whatever\n" }
Ich fand es am perldoc aber es funktioniert nicht für mich.
Den code habe ich bisher:
my $archive_dir = '/some/cheesy/dir/';
my ($stat_file,$stat_file2) = ($archive_dir."file1.txt",$archive_dir."file2.txt");
my ($fh1,$fh2);
for my $fh (fh1, fh2) { print $fh "whatever\n"; }
Ich bin immer "Bareword" Fehler auf der (fh1, fh2)
Teil, denn ich bin mit strict
. Ich habe auch gemerkt, dass Sie fehlten ein ;
im Beispiel, so dass ich vermute, es könnte einige Fehler mehr, abgesehen von, dass.
Was ist die korrekte syntax für das drucken in zwei Dateien auf einmal?
- versuchen
for my $fh ( \*FH1, \*FH2, \*FH3) { ... }
oderfor my $fh ( \*{FH1}{IO}, \*{FH2}{IO}, \*{FH3]{IO}) { ... }
- perldoc -f filenhandle indirekt
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie nicht geöffnet habe die Dateien.
Bemerken, dass ich nicht Verwendung von barewords. In den alten Tagen, würden Sie verwendet haben:
aber ein moderner Ansatz ist die ehemalige.
fh1
undfh2
statt$fh1
und$fh2
- und würde vermutlich geöffnet habe, Sie alsopen(fh1, ...)
wenn das kopieren ein Beispiel, barewords.($fh1,$fh2)
Teil korrigiert, so dassthanks++
for my $fh ( \*FH1, \*FH2 ) { ... }
oderfor my $fh ( \*{FH1}{IO}, \*{FH2}{IO} ) { ... }
$statfile2
im Tod bedroht Abschnitt sollte$stat_file
und$stat_file2
bzw.Ich würde halt IO::Tee.
Das obige Programm ergibt sich:
Datei1
Datei2
Ich würde empfehlen, das Lesen der ganzen perldoc-Datei für die erweiterte Anwendung.
Sieht richtig, es ist nur so, dass es üblich in Perl zu verwenden barewords als Datei-handles, aber heutzutage ist es empfohlen, mit normalen skalaren.
So stellen Sie sicher, dass Sie tatsächlich die Dateien zu öffnen, dann ersetzen Sie einfach den
(fh1, fh2)
Teil mit der eigentlichen Datei-handles (das wäre($fh1, $fh2)
oder so)andere version, basierend auf Brian ' s Antwort:
Müssen Sie zunächst die Datei zu öffnen, um zu erhalten, gültig filehandles
for my $fh ( \*MYFILEA, \*MYFILEB ) { print $fh "whatever\n" }