J'ai vu beaucoup de façons d'exécuter du code ou des scripts Perl, avec différents indicateurs. Cependant, lorsque j'essaie de rechercher sur Google ce que chaque drapeau signifie, j'obtiens principalement des résultats sur des sites Perl génériques et aucune information spécifique concernant les drapeaux ou leur utilisation n'y est trouvée.
Vous trouverez ci-dessous les drapeaux que je rencontre le plus souvent et je n’ai aucune idée de ce qu’ils signifient:
Je serai très reconnaissant si vous me dites ce que chacun de ces moyens et quelques cas d'utilisation pour eux, ou du moins me dire un moyen de découvrir leur signification.
Oui, Google est notoirement difficile à consulter pour la ponctuation et, malheureusement, Perl ne semble être principalement constitué 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
)
Entrer brièvement dans les options, une par une:
- p: place une boucle d’impression autour de votre commande afin qu’elle agisse sur chaque ligne d’entrée standard. Utilisé principalement pour permettre à Perl de vaincre le En termes de puissance ET de simplicité: -) - n: place une boucle sans impression autour de votre commande. - e: Vous permet de fournir le programme sous forme d'argument plutôt que Plutôt que dans un fichier. Vous ne voulez pas avoir à créer un fichier de script Pour chaque petite ligne d'un Perl. - i: modifie votre fichier d'entrée sur place (en effectuant une sauvegarde du original). Pratique pour modifier les fichiers sans le processus {copie, Suppression-original, renommer}. - w: active certains avertissements. Tout bon codeur Perl utilisera ceci. - d: s’exécute sous le débogueur Perl. Pour le débogage de votre code Perl, Évidemment. - t: Traite certains codes "corrompus" (douteux) comme des avertissements (le mode correct D'erreur contiendra ce code douteux). Utilisé pour renforcer La sécurité Perl, en particulier lors de l'exécution de code pour d'autres utilisateurs de , Tels que les scripts setuid ou les éléments Web.
Le -p
flag exécute essentiellement le script avec
while (<>) {
# exec here
}
continue {
print or die "-p destination: $!\n";
}
-e
vous permet de passer un script à STDIN
Perl -e '$x = "Hello world!\n"; print $x;'
-i
indique à l'interprète que toutes les données transmises à STDIN
par le script d'exécution doivent être effectuées sur place.
-w
est le même que use warnings;
, mais dans un contexte global plutôt que local
-d
exécute le débogueur Perl
D'autres ont mentionné perlrun. Si vous utilisez B :: Deparse, vous pouvez voir ce que cela signifie (pour la plupart des choses):
$ Perl -MO=Deparse -p -e 1
LINE: while (defined($_ = <ARGV>)) {
'???';
}
continue {
die "-p destination: $!\n" unless print $_;
}
-e syntax OK
1 est représenté par '???', car il est optimisé.
$ Perl -MO=Deparse -p -i -e 1
BEGIN { $^I = ""; }
LINE: while (defined($_ = <ARGV>)) {
'???';
}
continue {
die "-p destination: $!\n" unless print $_;
}
-e syntax OK
-i définit $ ^ I, comme
$ Perl -MO=Deparse -p -i.bak -e 1
BEGIN { $^I = ".bak"; }
LINE: while (defined($_ = <ARGV>)) {
'???';
}
continue {
die "-p destination: $!\n" unless print $_;
}
-e syntax OK
Mais rappelez-vous, <ARGV> utilise un argument ouvert de 2 arguments. Par conséquent, les noms de fichiers commençant par > <
ou début/fin avec |
.
Il existe également un indicateur important -n
Qui n'est pas mentionné dans la liste.
-n
Fonctionne de la même manière que -p
, Sauf qu'il n'imprime pas $_
Par défaut. Cela peut être très utile pour filtrer les fichiers texte.
De cette façon, Perl peut remplacer grep | sed
Dans une seule ligne.
Par exemple:
Perl -ne 'print "$1\n" if /Messages read: (\d+)/' <my_input.txt
Affiche toutes les valeurs entières trouvées après "Les messages lisent:" et rien de plus.