Ich habe viele Möglichkeiten gesehen, Perl-Code oder -Skripte mit unterschiedlichen Flags auszuführen. Wenn ich jedoch versuche zu googeln, was jede Flagge bedeutet, erhalte ich hauptsächlich Ergebnisse für generische Perl-Websites, und dort werden keine spezifischen Informationen zu den Flaggen oder ihrer Verwendung gefunden.
Unten sind die Flaggen aufgeführt, denen ich am häufigsten begegne, und ich habe keine Ahnung, was sie bedeuten:
- perl -pe
- Perl- pi
- perl -p
- perl -w
- perl -d
- perl -i
- perl -t
Ich wäre Ihnen sehr dankbar, wenn Sie mir sagen würden, was diese jeweils bedeuten, und einige Anwendungsfälle für sie, oder mir zumindest einen Weg nennen, ihre Bedeutung herauszufinden.
perl
command-line
flags
Tudor Constantin
quelle
quelle
perldoc perlrun
Perl eine Liste aller Befehlszeilenoptionen.Antworten:
Ja, Google ist notorisch schwierig für die Suche nach Interpunktion und leider Perl nicht scheint meist gemacht zu sein Interpunktion up :-)
Die Befehlszeilenoptionen sind alle in Perlrun aufgeführt . (über die Befehlszeile telefonisch verfügbar
perldoc perlrun
)Gehen Sie kurz nacheinander auf die Optionen ein:
quelle
perldoc perlrun
. Ich habe meine Antwort gelöscht. :-)-w
ist eigentlich generell zu vermeiden, da es Warnungen für den gesamten Code ermöglicht, einschließlich CPAN-Modulen, die nicht unter Berücksichtigung von Warnungen geschrieben wurden. Die Ergebnisse sind im Allgemeinen ziemlich laut und ziemlich nutzlos.-w
wird im Allgemeinen vermieden, sollte aberuse warnings
in Ihrem eigenen Code durch ersetzt werden.use warnings
in meinem eigenen Code, aber -w hat eine Verwendung - es hilft, schlecht geschriebene CPAN-Module auszusortieren. :-)-i
nimmt eine Erweiterung für die Sicherung.-e
Nimmt einen Perl-Befehl. In-0ep
sagen Sie Perl, dass 'p' ein Perl-Befehl anstelle eines Arguments ist. Das wird überhaupt nicht gut funktionieren.Das
-p
Flag führt das Skript grundsätzlich mit aus-e
ermöglicht es Ihnen, ein Skript an zu übergebenSTDIN
-i
Weist den Interpreter an, dass alleSTDIN
vom ausführenden Skript übergebenen Daten an Ort und Stelle ausgeführt werden sollen.-w
ist dasselbe wieuse warnings;
, jedoch in einem globalen und nicht in einem lokalen Bereich-d
führt den Perl-Debugger ausquelle
-w
ist nicht ganz das gleiche wieuse warnings
, letzteres ist auf die lokale Datei beschränktAndere haben Perlrun erwähnt. Wenn Sie B :: Deparse verwenden, können Sie sehen, was es bedeutet (für die meisten Dinge):
1 wird durch '???' dargestellt, da es wegoptimiert ist.
-i setzt $ ^ I, wie
Denken Sie jedoch daran, dass <ARGV> 2 offene Argumente verwendet. Verwenden Sie daher keine Dateinamen, die mit beginnen
> <
oder mit beginnen / enden|
.quelle
Es gibt auch eine wichtige Flagge,
-n
die in der Liste nicht erwähnt wird.-n
funktioniert genauso wie-p
, nur$_
wird standardmäßig nicht gedruckt . Dies kann beim Filtern von Textdateien sehr nützlich sein.Auf diese Weise kann Perl
grep | sed
in einem einzigen Einzeiler ersetzt werden.Beispielsweise:
perl -ne 'print "$1\n" if /Messages read: (\d+)/' <my_input.txt
Gibt jeden ganzzahligen Wert aus, der nach "Nachrichten lesen:" gefunden wurde, und nichts weiter.
quelle
print $1
ist nicht dasselbe wieprint
(print $_
).echo abc | perl -nw -e "print if (1)"
wird gedrucktabc
. Keine Notwendigkeit für die$1
Referenz.