Supposons que vous avez les entrées suivantes:
$ for i in a b c ; do echo "$i is $i" > $i; done
$ cat a b c
a is a
b is b
c is c
Tout le monde connaît les lettres majuscules sont beaucoup mieux!
perl -i.bak -pe '$_ = uc' a b c
Alors maintenant
$ cat a b c
A IS A
B IS B
C IS C
Mais nous aimerions vraiment peut cela dans une commande appelée upcase
, et c'est facile à faire!
#! /usr/bin/perl -pi.bak
$_ = uc
voir à l'œuvre:
$ for i in a b c ; do echo "$i is $i" > $i; done
$ cat a b c
a is a
b is b
c is c
$ ./upcase a b c
$ !cat
cat a b c
A IS A
B IS B
C IS C
Autres conseils d'un answer to a similar question:
L'option -e
, prévoit l'code Perl à exécuter, que vous pourriez penser comme un script sur la ligne de commande - alors déposez-le et collez le code dans le corps. Laisser -p
dans la ligne shebang (#!
).
En général, il est plus sûr de s'en tenir à au plus un "bouquet" d'options dans la ligne shebang. Si vous avez besoin de plus, vous pouvez toujours jeter leurs équivalents dans un bloc BEGIN {}
. Ne pas oublier d'activer le bit d'exécution!
chmod +x script-name
Parce que vous n'avez pas donné le one-liner réel que vous voulez convertir, je devais donner une large réponse générale. Si vous éditez votre question pour la rendre spécifique à ce que vous voulez faire, nous pouvons vous donner des réponses plus utiles.
Voulez-vous dire avoir Perl appeler à linux (shell) ligne de commande, ou que le shell appeler Perl? – Ether