Recherche…


Exécuter du code Perl en ligne de commande

De simples lignes simples peuvent être spécifiées comme arguments de ligne de commande pour perl en utilisant le commutateur -e (pensez "execute"):

perl -e'print "Hello, World!\n"'

En raison de règles de citation de Windows, vous ne pouvez pas utiliser de chaînes entre guillemets simples, mais vous devez utiliser l'une de ces variantes:

perl -e"print qq(Hello, World!\n)"
perl -e"print \"Hello, World!\n\""

Notez que pour éviter de casser l'ancien code, seule la syntaxe disponible jusqu'à Perl 5.8.x peut être utilisée avec -e . Pour utiliser quelque chose de plus récent, votre version de perl peut prendre en charge, utilisez plutôt -E . Par exemple, utiliser say disponible à partir de 5.10.0 sur Unicode 6.0 à partir de> = v5.14.0 (utilise également -CO pour s’assurer que STDOUT imprime UTF-8):

5.14.0
perl -CO -E'say "\N{PILE OF POO}"'

Utilisation de chaînes entre guillemets doubles dans les guichets uniques de Windows

Windows utilise uniquement des guillemets doubles pour envelopper les paramètres de ligne de commande. Pour utiliser des guillemets doubles dans perl one-liner (c'est-à-dire pour imprimer une chaîne avec une variable interpolée), vous devez leur échapper avec des barres obliques inverses:

perl -e "my $greeting = 'Hello'; print \"$greeting, world!\n\""

Pour améliorer la lisibilité, vous pouvez utiliser un opérateur qq() :

perl -e "my $greeting = 'Hello'; print qq($greeting, world!\n)"

Imprimer des lignes correspondant à un motif (PCRE grep)

perl -ne'print if /foo/' file.txt

Insensible à la casse:

perl -ne'print if /foo/i' file.txt

Remplacer une sous-chaîne par une autre (PCRE sed)

perl -pe"s/foo/bar/g" file.txt

Ou en place:

perl -i -pe's/foo/bar/g' file.txt

Sous Windows:

perl -i.bak -pe"s/foo/bar/g" file.txt

Imprimer seulement certains champs

perl -lane'print "$F[0] $F[-1]"' data.txt
# prints the first and the last fields of a space delimited record

Exemple CSV:

perl -F, -lane'print "$F[0] $F[-1]"' data.csv

Imprimer les lignes 5 à 10

perl -ne'print if 5..10' file.txt

Modifier le fichier sur place

Sans copie de sauvegarde ( non prise en charge sous Windows )

perl -i -pe's/foo/bar/g' file.txt

Avec une copie de sauvegarde file.txt.bak

perl -i.bak -pe's/foo/bar/g' file.txt

Avec une copie de sauvegarde old_file.txt.orig dans le sous-répertoire backup (à condition que ce dernier existe):

perl -i'backup/old_*.orig' -pe's/foo/bar/g' file.txt

Lecture du fichier entier sous forme de chaîne

perl -0777 -ne'print "The whole file as a string: --->$_<---\n"'

Note: Le -0777 est juste une convention. N'importe quel -0400 et au-dessus serait le même.

Télécharger le fichier dans mojolicious

perl -Mojo -E 'p("http://localhost:3000" => form => {Input_Type => "XML", Input_File => {file => "d:/xml/test.xml"}})'

Le fichier d:/xml/test.xml sera chargé sur le serveur qui écoute les connexions sur localhost:3000 ( Source )

Dans cet exemple:

-Mmodule exécute le use module; avant d'exécuter votre programme
-E commandline permet d'entrer une ligne de programme
Si vous n'avez pas de module ojo vous pouvez utiliser la commande cpanm ojo pour l'installer

Pour en savoir plus sur l'exécution de perl, utilisez la commande perldoc perlrun ou lisez ici



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow