vieweditattachhistoryswikistopchangessearchhelp

Perl

Practical Extraction and Report Language の略。UNIX 上で C プログラムを組むまでもないがシェルにやらせるほど単純ではない処理を手軽にこなすために開発された処理系。--sumim


Perlを特徴付けているのは、自然言語学者でもある創造者、Larry Wallの精神だと思う。
Perlにはコンテキストという考え方があり、同じ関数がそのコンテキスト(文脈)で違った振る舞いを示す。
また、一つの処理に対し、いろいろな表現を用いた書き方ができるし、慣れれば慣れる程、技巧を凝らした文章(プログラム)が書けるようになる感覚は、良い/悪いは別にしてもPerlならではのものだ。

sub { print sort @_ }->(4,2,1,3,5); 12345を印字

なんて書ける言語が他にあるのかな? 正直私はPerlから離れられそうもない。
現在、コミュニティによる書き直しという位置付けの元 Perl6の開発が続けられている。
言語をコミュニティに委ねるというのは、これまた壮大な実験であるが... --dseg

http://www.parrotcode.org/


> 他にあるのかな?
と振られたら書くしか。:-) --SHIMADA

Common Lisp
((lambda (a) (prin1 (sort a #'<))) '(4 2 1 3 5))


Ruby
proc{|a| p a.sort}[4,2,1,3,5]



じゃ、私も(笑)。--sumim

Smalltalk
#(4 2 1 3 5) sort

あ、そういうことじゃなくて?(^_^;) じゃ。
[ :a | Transcript show: a sort ] value: #(4 2 1 3 5)

なんだかな。



>>なんて書ける言語が他にあるのかな?
皆さん、どうもすみません...情けない。
サンプルコードは、無名関数でラムダ式そのものでした。
本当は正規表現のコードを書くつもりだったんですが、何故か上の文にしてしまいました。
数分の拾捨選択作業を経てかつ、上の文にしてしまったのは何かの因果...な訳ない --dseg


では、仕切りなおしで正規表現版を是非(笑)。--sumim


Perl的な文脈依存は、例えば

$foo = foo foo foo;

と書いた時、sub foo {}が定義されていない場合は3つのfooがそれぞれ


を表し、sub foo {}が定義されてる場合は

$foo = foo(foo(foo()));

と等価だったりすることじゃなかったかな。また、

$foo = foo, foo foo;
$foo = foo foo, foo;

のように、カンマを入れる位置で意味が変わってきます。
 他にも何かあった気がするけど忘れました。。。
--浅倉




このページを編集 (2096 bytes)


Congratulations! 以下の 5 ページから参照されています。

This page has been visited 5241 times.