• # La solution de base et l’équivalent sans grep externe

    Posté par . En réponse au message méta caractère "\(". Évalué à 2.

    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