2 Stimmen

Gibt es Gründe, in Perl jemals die Zwei-Argument-Form von open(...) zu verwenden?

Gibt es einen Grund, die Zwei-Argument-Form von open(...) in Perl eher als die Versionen mit drei oder mehr Argumenten?

Der einzige Grund, der mir einfällt, ist die offensichtliche Feststellung, dass die Zwei-Argument-Form kürzer ist. Aber wenn man davon ausgeht, dass die Ausführlichkeit keine Rolle spielt, gibt es noch andere Gründe, die Sie dazu veranlassen würden, die Zwei-Argument-Form von open(...) ?

3voto

Ether Punkte 51044

3voto

Ein Grund, die Zwei-Argument-Version von open zu verwenden, ist, wenn Sie etwas öffnen wollen, das eine Pipe oder eine Datei sein könnte. Wenn Sie eine Funktion haben

sub strange
{
     my ($file) = @_;
     open my $input, $file or die $!;
}

dann müssen Sie diese entweder mit einem Dateinamen wie "file" aufrufen:

strange ("file");

oder eine Pipe wie "zcat file.gz |"

strange ("zcat file.gz |");

Je nach Situation der gefundenen Datei kann die Zwei-Argumenten-Version verwendet werden. Sie werden die obige Konstruktion auch in "altem" Perl sehen. Das Vernünftigste dürfte jedoch sein, den Filehandle entsprechend zu öffnen und den Filehandle an die Funktion zu senden, anstatt den Dateinamen wie hier zu verwenden.

2voto

Abel Punkte 53946

Wenn Sie eine Zeichenkette kombinieren oder eine Variable verwenden, kann es ziemlich unklar sein, ob '<' o '>' usw. ist bereits vorhanden. In solchen Fällen ziehe ich persönlich die Lesbarkeit vor, das heißt, ich verwende die längere Form:

open($FILE, '>', $varfn);

Wenn Sie einfach eine Konstante verwenden, bevorzuge ich die einfache Eingabe (und halte die kurze Version ohnehin für besser lesbar, zumindest gegenüber der langen Version).

open($FILE, '>somefile.xxx');

-3voto

Rob Punkte 7874

Ich nehme an, Sie meinen open(FH, '<filename.txt') im Gegensatz zu open(FH, '<', 'filename.txt') ?

Ich glaube, das ist nur eine Frage der Vorliebe. Ich verwende aus Gewohnheit immer die erste Variante.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X