ブログトップ 記事一覧 ログイン 無料ブログ開設

サンプルコードによる「Perl入門」 - 未経験からプロの技術が身につくPerl講座

★★ 未経験から初めて、プロの実力がどんどん身につく、Perl入門講座 ★★
テキスト処理ならPerlが最適。if文,for文,配列,ハッシュ,正規表現を覚えれば、ログ解析も自由自在。大量のExcelデータを高速に集計。Webサイトを作成して、独自のサービスの展開も! 関数とモジュールを覚えれば業務効率が劇的に改善。初級から上級まで、Perlのすべてが学べます。「へぇー、こうすればこんなに簡単にできるんだ!!」プログラミングの面白さを実感しよう。
プロとして第一線で活躍し続けるために、プログラミングの確かな実力を「サンプルコードによるPerl入門」で身に着けてみませんか。 学び続けることで、あなたのエンジニアとしての価値が5倍、10倍に高まります。

2014-05-28

Perl 5.20がリリース - ipv6のサポート、サブルーチンの新しい文法、新しいスライス記法、Unicode 6.3への対応など

 Perl 5.20がリリースされました。今回は結構盛りだくさん。ピックアップして紹介します。

Perl 5.20で追加・変更された機能

IO::Socket::IPがコアモジュールに

 Perl 5.20ではIO::Socket::IPがコアモジュールになりました。Perlではソケットを使う場合にIO::Socket::INETを使っていましたが、ipv6のサポートを含めて、同一のインターフェースで利用できるモジュールのようです。

CGI,Module::Buildが廃止予定になります

 長年コアモジュールだったCGIモジュールが、次期リリースでコアからはずれます。。また、ピュアPerlでmake相当のことができるModule::Buildが次期リリースでコアからはずれます。

 次期リリースのPerl 5.22からは、CGIモジュールは必要であればcpanからインストールする必要があります。Module::Buildについては、必要であれば、自動的にインストールされるので、特に問題がないようです。

サブルーチンシグネチャ

 サブルーチンシグネチャが実験的に追加されました。Perlで普通の引数がかける機能です。まだ実験段階なので、使用すると警告がでます。

use feature 'signatures';

sub foo ($x, $y) {
  ...
}

 詳しくはPerl 5.20でサブルーチンシグネチャが実験的に導入されるをご覧ください。

 これに伴って従来のプロトタイプを書く場合は、prototypeアトリビュートが使えるようになりました。

sub foo : prototype($$) {
  ...
}

 この機能は、とてもよいので、早い段階で、警告が消えたらいいなと思います。

配列スライス、ハッシュスライスの新しい記法

 配列スライス、ハッシュスライスが、新しい記法で書けるようになりました。

use feature 'postderef';

# 配列スライス
my ($title, $author) = $array_ref->@[0, 1];

# ハッシュスライス
my ($title, $author) = $hash_ref->@{'title', 'author'};

 「$aref->@*」という記法も追加されましたけれど、個人的には「$aref->@*」記法はいらないんじゃないかなと思った。全体をとりたいのであれば「@$aref」ができれば十分じゃないかなぁ。

 スライス記法は、わかりやすくて便利だけどね。

新しいスライス「インデックス/値 スライス」と「キー/値 スライス」と

 配列でインデックスを指定すると、「インデックスと値」の組が取得できる「インデックス/値 スライス」が追加されました。

my @array = (1, 3, 5);

# (0 => 1, 1 => 3)
my %index_values = %array[0, 1];

 ハッシュでキーを指定すると、「キーと値」の組が取得できる「キー/値 スライス」が追加されました。

my %hash = (a => 1, b => 2, c => 3);

# (a => 1, b => 2);
my %key_values = %hash{'a', 'b'};

 便利だけれど、慣れないとちょっと読みづらいか。

文字列コピーの性能の改善

 文字列をコピーするときに、コピーオンライトが効くようになりました。参照するだけの場合は、大きな文字列であっても、コピーが非常に速くなり、スカラのリファレンスを利用する必要がなくなります。

ithreadが非推奨になりました

 ithreadが公式に非推奨になりました。ithreadは、イメージからすると、マルチタスクのための高速で軽量なスレッドと感じられますが、実際はそんなことはなく、非常に使いにくく、重いものです。

 歴史的にはおそらく、Windowsでforkをエミュレートするために実装されたように思いますが、ユーザーが利用するには、非常に誤解や困難が伴っていましたので、非推奨とマークされるのは、よいことだと思います。

その他の細かな変更

  • Unicode 6.3 に対応
  • find2perl, s2p, a2pが廃止予定になりました。次期リリースのPerl 5.22からは利用する場合はcpanからインストールする必要があります。


Perlリリース情報

jubakojubako 2014/05/30 05:33 s/聞く/効く/
s/時期/次期/g

perlcodesampleperlcodesample 2014/05/30 09:08 ありがとうございます。修正します。

laclefdorlaclefdor 2014/06/03 13:14 あらら、Module::Buildがコアから外れるとは。CPANモジュールのビルドは何がスタンダードなのでしょうか?

perlcodesampleperlcodesample 2014/06/04 19:19 laclefdorさんおひさしぶりです。

>CPANモジュールのビルドは何がスタンダードなのでしょうか?

今も昔もExtUtils::MakeMakerです。ほとんどの場合は、これで十分だと思います。Module::Buildは必要であれば自動的にcpanからインストールされる仕組みがあるので、問題がないようです。

perlcodesampleperlcodesample 2014/06/04 19:20 perl Makefile.PL
make
make test
make install

ですね。Makefile.PLはExtUtils::MakeMakerで記述されます。

laclefdorlaclefdor 2014/06/04 23:31 perlcodesampleさん、お久しぶりです。

やはりExtUtils::MakeMakerですか・・・まあ殆どの場合は確かに十分ですよね。gmakeの挙動がマシン依存なのでpure perlのビルダーの方が良いのですが、後継者と目されていたModule::Buildの方が先に非推奨になっちゃった感じですね。

perlcodesampleperlcodesample 2014/06/05 10:33  Module::Buildは非推奨になったわけではないですよ。最小限のツールキットとして必要ではないので、コアからはずれるだけで、必要な人は普通のCPANモジュールと同じ感覚で利用すればいいと思います。非推奨ではないんですよ。

laclefdorlaclefdor 2014/06/05 11:45 なるほど。こちらを読んで勘違いしていました。
http://www.dagolden.com/index.php/2140/paying-respect-to-modulebuild/

奈良阪奈良阪 2014/06/19 16:56 $aref->@*は単なる$arefならさほど変わらないですが、$href->{word}->{type}->@*とかが便利になると思いますけどね。去年のYAPCで聞いてから待ちわびてましたし。

perlcodesampleperlcodesample 2014/06/23 16:56  全体のデリファレンスは、@{$href->{word}->{type}}とできるので、便利にはならないかなぁ。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証