Perl 5.20 リリース 23
ストーリー by hylom
6が来ないまま5系のアップデートは続く 部門より
6が来ないまま5系のアップデートは続く 部門より
あるAnonymous Coward 曰く、
Perl 5.20 がリリースされました(リリース告知、変更内容、SourceForge.JP Magazine)。
Perl 5.20では、新たにサブルーチンシグネチャが導入され、サブルーチンに与えられた引数を格納する変数を以下のような形で指定できるようになっている。
sub foo($bar, $hoge) {
…
}
サブルーチンの引数 (スコア:0)
ん?なにが変わったんだろ?と一瞬分からなかった。
最近PHPの案件が多かったせいでその書き方に違和感が無くなってたんだな。
Re:サブルーチンの引数 (スコア:1)
-- 哀れな日本人専用(sorry Japanese only) --
Re:サブルーチンの引数 (スコア:4, 参考になる)
単に my($bar,$hoge)=@_;としただけだと、関数呼び出し時の引数型チェックが行われません。
と等価って感じじゃないかな。こう書いた場合は、関数fooの呼び出しで引数がスカラー値2つじゃなかったらエラーになります。
こう書くよりは直感的(というかC言語的というか他のC言語系スクリプト言語に近い)だしわかりやすいと思いますが、Experimental だし、既存のPerlでも動くようにってことを考えると、しばらくは使えないなぁ。
今後より大きな仕様変更が入って「今からPerl Scriptを書くなら、5.2x移行じゃないとやってらんねー」って時代が来て、なおかつ「今時Perlは5.2xだろ」っていう、5.2xが当たり前な状況になって、やっと、このシグネチャ機能を気兼ねなく使えるようになると思いますが…はてさて一体何年後になるやら。
Re:サブルーチンの引数 (スコア:5, 参考になる)
Perl 5.20 の perlsub (英語) [metacpan.org] とかを読んでちょっと調べてみた。
だいたい等価だけれど、完全に等価ではないのでメモ。
従来のプロトタイプはサブルーチンの本体の一部にはならないので、サブルーチンへの参照を使って呼び出した時にはチェックされない。
これに対し、新しいシグネチャーはサブルーチンの本体の一部なので、参照を使って呼び出した時でもチェックされる。
ほかにも何か違いがあるかも。
Re: (スコア:0)
現実の挙動は、こうですね。
↓
% export PERL5OPT=''
% perl -MO=Deparse -Mfeature=signatures -le 'sub func($a, $b){} ;my $ref =\&func ; $ref->()'
The signatures feature is experimental at -e line 1.
BEGIN { $/ = "\n"; $\ = "\n"; }
sub func {
use feature 'signatures';
die 'Too many arguments for subroutine' unless @_ = 2;
my $a = $_[0];
my $b = $_[1];
();
}
use feature 'signat
Re:サブルーチンの引数 (スコア:1)
わかります。
未だに非破壊置換オプションを使うのに躊躇するのですが…
もう 3 年も前なのですね。
http://perldoc.jp/docs/perl/5.14.0/perl5140delta.pod#Non-destructive32... [perldoc.jp]
Re: (スコア:0)
後はデフォルト値の指定がちょっと簡単になりそう。
試してないけど。
確かにポータブルなコードにはまだ使えませんが、それはどんな新機能でも基本的には同じこと。
# あるPHPコードにPHP4用の分岐を入れたのは一昨年だったか去年だったか。
Re: (スコア:0)
もう忘れてよい言語だな>Perl
ルーパーるーぱー (スコア:0)
結局スクリプト言語も速度優先のようですね。
1文字でも少なく、1秒でも速く(タイプできるように) (スコア:0)
省略こそがParlの美学だと思ってたんだけど
日和った?
Re: (スコア:0)
実用性と多様性という名のなんでもできるカオスがPerlの美学
#コードもカオス
Re:1文字でも少なく、1秒でも速く(タイプできるように) (スコア:1)
名状しがたいバールのようなモノ。
Re: (スコア:0)
エレガントなコードとは、同じ処理においては、常に同じ姿をしているはずである。 -- あるPythoner
Re:1文字でも少なく、1秒でも速く(タイプできるように) (スコア:1)
pythonista とも言うようですね。
# 一通りじゃないじゃん!!
Re: (スコア:0)
ティムトゥデイ(There's More Than One Way To Do It.)
larryのtwitterアカウントもこんなことに(Perlの作者かどうかは未確認
> https://twitter.com/TimToady [twitter.com]
Perl 6 って全然聞かなくなったな (スコア:0)
まだどっかでやってはいるんだろうけど。
Re: (スコア:0)
Perl 5の後継ではないと宣言=事実上の開発終了宣言
Re: (スコア:0)
名前の印象で (スコア:0)
勝手に「とうとうPerlにも関数型プログラミングの波が…」と思ったら、
全く関係ない機能だし、以前からそれっぽいことは普通に出来てたんですね。
ごめんよ、ラリー・ウォール。
書店における存在感。 (スコア:0)
新しい本は出ないし、古い本をかえば、「ソレモダンジャナイカラ」
って魔法を使うし。
どうしたいんだろね。この言語。
Re:書店における存在感。 (スコア:1)
もはや、如何にバージョンアップをやめるかを考えた方がいいかもしれないですね。
#今までのスクリプトやワンライナが動けばいいじゃない。
oneliner (スコア:0)
反論は歓迎するが、例示を求む。
20年ぐらい遅い機能追加 (スコア:0)
おかげで Perl にそまらなくてすんだけど