ruby - sert - phph net




Quelles autres langues ont des fonctionnalités et/ou des bibliothèques similaires au format Perl? (2)

Je suis peut-être minoritaire ici, mais j'aime beaucoup les formats de Perl . J'aime particulièrement pouvoir envelopper un long morceau de texte dans une colonne ("~~ ^ <<<<<<<<<<<<<<<<" type stuff "). Existe-t-il d'autres langages de programmation ayant des fonctionnalités similaires ou des bibliothèques qui implémentent des fonctionnalités similaires? Je suis particulièrement intéressé par les bibliothèques qui implémentent quelque chose de similaire pour Ruby, mais je suis également curieux de connaître d'autres options.


J'ai l'impression de me souvenir de quelque chose de similaire dans Fortran quand je l'ai utilisé il y a plusieurs années (mais il se peut que ce soit une bibliothèque de tierce partie).

En ce qui concerne les autres options de Perl, jetez un oeil à Perl6::Form .

La fonction de form remplace le format en Perl6. Damian Conway dans " Perl Best Practices " recommande d'utiliser Perl6::Form avec Perl5 citant les problèmes suivants avec le format ....

  • statiquement défini
  • compter sur des variables globales pour config & pkg vars pour les données qu'ils formatent sur
  • utilise des handles de fichiers nommés (uniquement)
  • pas récursif ou ré-entrant

Voici une variation de Perl6::Form sur l'exemple de Ruby par Robert Gamble ....

use Perl6::Form;

my ( $month, $day, $year ) = qw'Sep 18 2001';
my ( $num, $numb, $location, $toe_size );

for ( "Market", "Home", "Eating Roast Beef", "Having None", "On the way home" ) {
    push @$numb,     ++$num;
    push @$location, $_;
    push @$toe_size, $num * 3.5;
}

print form 
    '   Piggy Locations for {>>>}{>>}, {<<<<}',
                          $month, $day, $year ,
    "",
    '  Number: location              toe size',
    '  --------------------------------------',
    '{]})      {[[[[[[[[[[[[[[[}       {].0} ',
     $numb,    $location,              $toe_size;

Il y a la fonction Lisp (format ...) . Il prend en charge le bouclage, les conditions et tout un tas d'autres choses amusantes.

par exemple (copié du lien ci-dessus):

(defparameter *english-list*
  "~{~#[~;~a~;~a and ~a~:;[email protected]{~a~#[~;, and ~:;, ~]~}~]~}")

(format nil *english-list* '())       ;' ==> ""
(format nil *english-list* '(1))      ;' ==> "1"
(format nil *english-list* '(1 2))    ;' ==> "1 and 2"
(format nil *english-list* '(1 2 3))  ;' ==> "1, 2, and 3"
(format nil *english-list* '(1 2 3 4));' ==> "1, 2, 3, and 4"




format