voici le ou les articles dont l'un des tags est : one-liner

Perl : un one-liner - II

Un petit en passant pour convertir du décimal en hexa. Pratique pour les codes couleurs du chteumeuleu.

Admettons qu'on ait trois valeurs de RVB en décimal : 255, 128 et 0. Pour obtenir la valeur en hexadécimal avec le signe "#" au début, on utilise la fonction "printf" en Perl :

drzz@hanouka:~$ perl -e 'printf "#" . "%02x"x3 ."\n",255,127,0'
#ff7f00

Il n'y a qu'une option "-e" dans ce cas. En effet, on ne demande que l'exécution de ou des instructions entre guillemets simples. Le "#" est affiché puis concaténé par l'opérateur "." aux trois valeurs transformées par l'indication "%02x" (qui sert à la conversion vers de l'hexadécimal) à trois reprises (le "x3"). On n'oublie pas le retour à la ligne "\n" et le passage des arguments qui feront l'objet du traitement pour la sortie formatée (les valeurs 255,127,0).

tags : Perl, one-liner

mis en ligne : Sat Jan 2 22:14:56 CEST 2010

Perl : un one-liner - I

Voici le début d'une série de one-liners en Perl.

C'est un spécial "Mac OS X". Je m'explique. Vous avez un fichier ASCII qui déboule d'un Mac quelconque (pas sous OS 9 quand même) et vous voulez le récuperer sous un Unix quelconque ? Problème, les caractères de fin de ligne ne correspondent pas et vous êtes avec plein de "^M" en fin de ligne.

On envoie donc :

drzz@hanouka:~$ perl -pi -e "s/\r/\n/g" <nom_du_fichier>

On a juste substitué le caractère de fin de ligne "\r" par "\n" pour être total Unix. Pour celles et ceux pas trop familiers avec les options en ligne de commande sous Perl, les voici :

  • -e : c'est pour exécuter l'option directement sur la ligne de commande sans préciser de nom de fichier de script (comme la lettre le laisse entendre);
  • -pi : cette option permet grâce au "p" de créer une boucle comme :
    while (<>) {
    
        s/\r/\n/g;
    
    } continue {
    
        print; # l'option "-i" permet d'écrire dans le fichier au nom original
    
    }
    
    (remarquer l'équivalence du script entre les deux premières accolades) pour traiter chaque ligne et renvoyer le retour dans le même fichier (option "-i"; on est ici très proche de sed;

Bon, j'espère que c'est clair, en tout cas, je m'en sers assez souvent.

tags : Perl, one-liner

mis en ligne : Sun Dec 20 16:18:52 CEST 2009

consulter l'ensemble des articles publiés sur drZZ : ici