私はここでは少数派かもしれませんが、 Perlのフォーマットをとても楽しんでいます。私は特に、長いテキストを列内で折り返すことができるのが好きです( "~~ ^ <<<<<<<<<<<<<<<<"タイプのもの)。同様の機能を持つ他のプログラミング言語、または同様の機能を実装するライブラリはありますか?私はRubyに似たものを実装するライブラリに特に興味がありますが、他のオプションにも興味があります。
3 に答える
13
何年も前に Fortran を使っていたときに似たようなことを思い出したようです (ただし、サードパーティのライブラリだった可能性があります)。
Perl のその他のオプションについては、 を参照してくださいPerl6::Form。
form関数は Perl6 で置き換えられformatます。" Perl Best Practices "の Damian Conway は、Perl5 での使用を推奨しPerl6::Formており、以下の問題を挙げていますformat....
- 静的に定義された
- 構成にはグローバル変数に依存し、フォーマットするデータには pkg 変数に依存します
- 名前付きファイルハンドルを使用する (のみ)
- 再帰的または再入可能ではない
これは、Perl6::FormRobert Gamble による Ruby の例のバリエーションです....
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;
于 2008-10-25T21:23:19.610 に答える
7
FormatRは、RubyにPerlのようなフォーマットを提供します。
ドキュメントの例を次に示します。
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
}
生成するもの:
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
于 2008-10-25T16:30:46.287 に答える
2
Lisp(format ...)関数があります。ループ、条件文、その他たくさんの楽しいものをサポートしています。
例(上記のリンクからコピー):
(defparameter *english-list*
"~{~#[~;~a~;~a and ~a~:;~@{~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"
于 2008-10-25T16:30:02.963 に答える