Comment faire passer les méta caractère tel que "(" dans le script suivant :
Tu veux quoter la parenthèse pour le shell, pas pour Perl. Et pour envoyer un \ au shell, il faut le quoter lui-même : #!/usr/bin/perl -w
$who = `who | grep -v \\(:`;
print "$who";
Cela dit, la remarque de Michel reste très pertinente : il serait stupide d’utiliser des outils externes moins puissants que les fonctions intégrées à Perl (surtout si c’est pour avoir du mal après avec des appels alambiqués...).
L’équivalent le plus proche : #!/usr/bin/perl -w
use strict;
my @who = grep !/\(:/, `who`;
print @who;
Note : là, le \ n’est pas là pour le shell, mais parce qu’avec un grep moins limité que le grep de base, les parenthèses sont des caractères spéciaux (c’est déjà le cas avec egrep).
« Le fascisme c’est la gangrène, à Washington comme en Russie. » — adapté de Renaud, Hexagone
# La solution de base et l’équivalent sans grep externe
Posté par Arthur Accroc . En réponse au message méta caractère "\(". Évalué à 2.
Tu veux quoter la parenthèse pour le shell, pas pour Perl. Et pour envoyer un \ au shell, il faut le quoter lui-même :
#!/usr/bin/perl -w$who = `who | grep -v \\(:`;
print "$who";
Cela dit, la remarque de Michel reste très pertinente : il serait stupide d’utiliser des outils externes moins puissants que les fonctions intégrées à Perl (surtout si c’est pour avoir du mal après avec des appels alambiqués...).
L’équivalent le plus proche :
#!/usr/bin/perl -w
use strict;
my @who = grep !/\(:/, `who`;
print @who;
Note : là, le \ n’est pas là pour le shell, mais parce qu’avec un grep moins limité que le grep de base, les parenthèses sont des caractères spéciaux (c’est déjà le cas avec egrep).
« Le fascisme c’est la gangrène, à Washington comme en Russie. » — adapté de Renaud, Hexagone