Wie übergebe ich stdin in ein Perl-Skript, das nach Eingabe als einzigem Parameter sucht?

8

Diese Frage wurde aus Faulheit von mir gemacht, weil ich Dutzende von Skripten habe, die in der einfachen Struktur ausgeführt werden:

%Vor%

... und die Ausgabe wird auf stdout gedruckt. Jetzt erkenne ich jedoch, dass ich bestimmte Situationen habe, in denen ich gerne Eingaben in diese Skripte pumpen würde. So etwas in der Art:

%Vor%

Kennt jemand eine Möglichkeit, dies zu tun, ohne alle meine Skripte neu zu programmieren, um stdin anstelle einer benutzerdefinierten Eingabedatei zu akzeptieren? Meine Skripte suchen den Dateinamen nach einer Anweisung wie dieser:

%Vor%

Danke für Anregungen!

    
jake9115 18.10.2013, 18:33
quelle

2 Antworten

12

Verwenden Sie - als Dateiname

%Vor%     
Сухой27 18.10.2013, 18:36
quelle
7

mpapec hat die einfachste Lösung geliefert. Ich möchte den Diamantoperator empfehlen: <> .

In einem Skript, wo Sie

tun würden %Vor%

Sie können den Diamond-Operator verwenden, um den Großteil dieses Codes zu ersetzen

%Vor%

Der Dateiname lautet ARGV , wenn Sie Argumentdateinamen verwenden, oder STDIN , falls nicht. Der Dateiname wird in $ARGV gefunden.

Dieser Operator ruft ein Verhalten auf, bei dem Perl nach Eingaben entweder aus Dateinamenargumenten oder aus der Standardeingabe sucht.

Was bedeutet, dass Sie

tun %Vor%

oder

%Vor%

Der Diamantoperator nimmt die Eingabe gut.

Hinweis: Ihre open -Anweisung ist gefährlich. Sie sollten drei Argumente mit explizitem Modus und lexikalischem Dateihandle verwenden. Die mit ihr verbundene die -Anweisung sollte die Fehlervariable $! enthalten, um Informationen darüber zu liefern, warum das Öffnen fehlgeschlagen ist.

    
TLP 18.10.2013 18:56
quelle

Tags und Links