excellent tiens, je ne connaissais pas le -p , bon ca, bon ca..
Yeps ;-)
En fait, j'ai fait une petite erreur:
-n = "while (<>) { ... }" -p = "while (<>) { ... ; print $_; }"
Donc -p == -n + print $_
;-)
Un truc plutôt génial aussi, c'est -i :
perl -p -i.old -e 's/foo/bar/g' spam
Avec le -i (suivi/accolé d'une extension de fichier), Perl prend le(s) fichier(s) en paramètres ("spam" dans l'exemple), en fait d'abord un "mv" avec l'extension indiquée dans le -i (".old" dans l'exemple), l'utilise ensuite comme source pour l'expression ('s/foo/bar/g'), ceci combiné au -p qui donne la boucle while autour de STDIN comme décrit ci-dessus. Le résulat est ensuite écrit dans le nom de fichier original ("spam" dans l'exemple).
En clair, la ligne perl ci-dessus revient à faire ceci:
mv spam spam.old perl -e 'while (<>) { s/foo/bar/g; print $_; }' < spam.old > spam
On peut également ajouter un préfixe, déplacer l'ancienne version dans un autre répertoire, etc...
Il suffit pour cela d'utiliser "*" dans l'extension spécifiée derrière le -i: "*" sera remplacé par le nom du fichier.
En outre, si l'on ne spécifie rien derrière le "-i", le fichier original est tout simplement écrasé (pas de backup donc).
Et puis il y a encore une possibilité bien scabreuse à la Perl d'utiliser cela pour copier des fichiers:
perl -pi 'brol/*.orig' -e 1 a b c d e f g h
Avec cette ligne-là, les fichiers a, b, c, d, e, f, g et h seront copiés avec l'extension ".orig" dans le sous-répertoire "brol".
Aucune modification n'est faite étant donné que l'expression "1" en Perl ne fait rien du tout et retourne OK ;-)
Plus d'infos dans "man perlrun" => "-i"
-- -o) Pascal Bleser http://guru.unixtech.be /\\ <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> _\_v The more things change, the more they stay insane.
_______________________________________________________ Linux Mailing List - http://www.unixtech.be Subscribe/Unsubscribe: http://www.unixtech.be/mailman/listinfo/linux Archives: http://www.mail-archive.com/[EMAIL PROTECTED] IRC: efnet.unixtech.be:6667 - #unixtech