2008-10-25 6 views
6

Ich kann hier in der Minderheit sein, aber ich genieße sehr Perl's formats. Ich mag besonders in der Lage, ein langes Stück Text innerhalb einer Spalte zu umwickeln ("~~^< < < < < < < < < < < < < < < <" Typ Material). Gibt es andere Programmiersprachen mit ähnlichen Funktionen oder Bibliotheken, die ähnliche Funktionen implementieren? Ich bin besonders an Bibliotheken interessiert, die etwas Ähnliches für Ruby implementieren, aber ich bin auch neugierig auf andere Optionen.Welche anderen Sprachen haben ähnliche Funktionen und/oder Bibliotheken wie das Perl-Format?

+0

Die Verbindung ist (effektiv) unterbrochen. –

Antwort

7

FormatR Perl-ähnliche Formate für Ruby.

Hier ein Beispiel aus der Dokumentation:

require "formatr" 
include FormatR 

top_ex = <<DOT 
    Piggy Locations for @<< @#, @### 
        month, day, year 

Number: location    toe size 
------------------------------------------- 
DOT 

ex = <<TOD 
@)  @<<<<<<<<<<<<<<<<  @#.## 
num, location,    toe_size 
TOD 

body_fmt = Format.new (top_ex, ex) 

body_fmt.setPageLength(10) 
num = 1 

month = "Sep" 
day = 18 
year = 2001 
["Market", "Home", "Eating Roast Beef", "Having None", "On the way home"].each {|location| 
    toe_size = (num * 3.5) 
    body_fmt.printFormat(binding) 
    num += 1 
} 

Welche produziert:

Piggy Locations for Sep 18, 2001 

Number: location    toe size 
------------------------------------------- 
1)  Market     3.50 
2)  Home      7.00 
3)  Eating Roast Beef  10.50 
4)  Having None    14.00 
5)  On the way home   17.50 
2

Es gibt die Lisp (format ...) function. Es unterstützt Looping, Conditionals und eine ganze Reihe anderer lustiger Sachen.

zum Beispiel (von oben Link kopiert):

(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" 
13

ich etwas mich zu erinnern, in Fortran ähnlich, als ich es vor vielen Jahren verwendet (jedoch kann es gut haben waren 3rd-Party-Bibliothek).

Wie für andere Optionen in Perl werfen Sie einen Blick auf Perl6::Form.

Die Funktion form ersetzt format in Perl6. Damian Conway in "Perl Best Practices" empfiehlt Perl6::Form mit Perl5 mit Berufung auf die folgenden Probleme mit format ....

  • statisch definiert
  • verlassen sich auf globale Variablen für Config & Pkg für Daten Vars sie formatiert werden auf
  • Anwendungen genannt Dateihandies (nur)
  • nicht rekursiv oder einspringenden

Hier ist eine Perl6::Form Variation des Ruby-Beispiels von 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; 
Verwandte Themen