Perl drapeaux -pe, pi, -p, -w, -d, -i, -t?
J'ai vu beaucoup de façons de l'exécution de code Perl ou des scripts, avec des drapeaux différents. Cependant, lorsque j'essaie de google pour ce que chaque indicateur signifie, j'ai surtout obtenir des résultats génériques Perl sites et aucune information spécifique concernant les drapeaux ou de leur utilisation est trouvé là.
Ci-dessous sont les indicateurs que je rencontre le plus souvent, et je n'ai pas la moindre idée de ce qu'ils signifient:
- perl -pe
- perl -pi
- perl -p
- perl -w
- perl -d
- perl -je
- perl -t
Je serai très reconnaissant si vous me dites ce que chacun de ceux de la moyenne et de certains cas d'utilisation, ou au moins me dire une manière de trouver leur sens.
- googler pour base des réponses au sujet de perl sera souvent vous conduire à certains vraiment inutile de sites. vérifiez toujours perl documents de la première.
- guide Utile pour certains de Perl options de ligne de commande sur perl.com.
- Détaché. Dans ce cas,
perldoc perlrun
a une liste de toutes les options de ligne de commande Perl accepte. - Google problème: Le signe est interprété par Google en ce sens "exclure ce terme." Pour éviter ce comportement placer le terme contenant le signe moins dans le devis.
Vous devez vous connecter pour publier un commentaire.
Oui, Google est notoirement difficile pour la recherche de signes de ponctuation et, malheureusement, Perl ne semblent être principalement composé de ponctuation 🙂
Les commutateurs de ligne de commande sont tous détaillés dans perlrun. (disponible à partir de la ligne de commande en appelant
perldoc perlrun
)D'aller dans les options brièvement, un par un:
perldoc perlrun
. J'ai supprimé ma réponse. 🙂-w
est généralement à éviter, en fait, car elle permet à des avertissements pour les tous code, y compris les modules CPAN qui n'étaient pas écrites avec des avertissements à l'esprit. Les résultats sont généralement assez bruyant, ainsi que assez inutile.-w
est généralement à éviter, mais il devrait être remplacé paruse warnings
dans votre propre code.use warnings
dans mon propre code, mais -w n'ont pas été utilisés, il aide à éliminer les mal écrit modules CPAN. 🙂perl -i -0pe
tout fonctionne comme prévu, si je neperl -i -0ep
il ne l'est pas, si je change d'autres drapeaux de l'ordre, il rompt également. Quel est le problème avec ça? Je suis très confus...-i
prend une extension pour la sauvegarde.-e
prend une commande perl. Dans-0ep
vous dites perl 'p' est une interface commande au lieu d'un argument. Qui ne fonctionne pas bien du tout.La
-p
drapeau fondamentalement exécute le script avec-e
vous permet de passer un script pourSTDIN
-i
dirige l'interprète que toutes les données transmises àSTDIN
par l'exécution du script est de faire en place.-w
est le même queuse warnings;
, mais dans une approche globale plutôt que locale-d
exécute le débogueur Perl-w
n'est pas tout à fait la même queuse warnings
, celle-ci est étendue vers le fichier localD'autres ont mentionné perlrun. Si vous utilisez B::Deparse, vous pouvez voir ce que cela signifie (pour la plupart des choses):
1 est représenté par '???', parce qu'il est optimisé loin.
-i définit $^j'ai, comme
Mais rappelez-vous, <ARGV> utilise 2-l'argument de l'ouvrir, donc ne pas avoir des noms de fichiers qui commencent par
> <
ou de début/fin avec|
.Il est également un important indicateur
-n
qui n'est pas mentionné dans la liste.-n
fonctionne de la même comme-p
, seulement, il n'a pas l'impression$_
par défaut. Cela peut être très utile dans le filtrage des fichiers texte.De cette façon, Perl peut remplacer
grep | sed
en un seul-liner.Par exemple:
perl -ne 'print "$1\n" if /Messages read: (\d+)/' <my_input.txt
Affiche chaque valeur entière trouvé après "Messages à lire: ", et rien de plus.
print $1
n'est pas le même queprint
(print $_
).echo abc | perl -nw -e "print if (1)"
imprimeabc
. Pas besoin de le$1
de référence.