Ich versuche, den richtigen PBP-genehmigten Weg zu finden, um eine Mehrfachleitung nacheinander zu verarbeiten. Viele Perl-Codierer schlagen vor, die mehrzeilige Zeichenfolge als Dateihandle zu behandeln, was gut funktioniert, wenn Sie in Ihrem Skript nicht "use strict" verwenden. Dann erhalten Sie vom Compiler eine Warnung, dass eine Zeichenkette nicht als Symbol verwendet werden darf, während strenge Referenzen verwendet werden.
Hier ist ein einfaches Arbeitsbeispiel für das Problem:
%Vor%Beachten Sie, dass die Zeile "use strict" auskommentiert ist. Wenn ich dieses Skript ohne Verwendung von strict ausführen, bekomme ich, was ich will und erwarte:
%Vor%Hier ist das Problem. Wenn ich die Zeile "use strict" auskommentiere, bekomme ich die folgende Warnung oder einen Fehler von Perl:
%Vor%Zeile 8 ist das "open $ ResultsHandle, & lt; ', \ $ return;" Linie, nebenbei bemerkt. Da Perl Best Practices mich dazu zwingen, strict zu verwenden, wie erwartet PBP, dass ich eine Multiline-Zeichenkette Zeile für Zeile verarbeite? Irgendwelche Vorschläge von der SO-Community?
Danke!
Initiiere $ResultsHandle
nicht:
Wenn Sie $ResultsHandle
undefined vor dem open()
belassen, wird es mit einem Verweis auf das Datei-Handle ausgefüllt. Weil Sie es auf eine Zeichenkette setzen, geht open()
davon aus, dass es stattdessen eine symbolische Referenz auf eine Variable sein sollte --- nicht erlaubt unter use strict
.
Der prägnantere PBP-Weg besteht darin, wie folgt zu öffnen :
%Vor%Dadurch entfällt das frühere "my $ ResultsHandle"; Deklaration und vermeidet die strikte Warnung, die Sie kennengelernt haben.
Tags und Links string multiline perl filehandle