日記帳だ! with Tux on Libserver

二度目の大改造!! 日記帳…か?を継承し、より柔軟でパワフルなBlogに変身しました。

RSSに対応しています。リンク・コメント・トラックバックは自由にしていただいてほぼ問題ありません。
RSS購読方法、僕のリンク・コメント・トラックバックについての考えを読むことをおすすめします。

JavaScriptを有効にし、Cookieを受け入れ、以下のブラウザを使うことで完全なコンテンツが楽しめます。
Mozilla Firefox 3.0(Get Firefox)・Opera 9.6・Safari 3.2・Lunascape 4/5(Gecko)・Lunascape 5(WebKit)
Internet Explorer 7/8とそれを使うIEコンポーネントブラウザ(Lunascape・Sleipnirなど)

新機能だらけのPerlは異様

うーん、やはり中間クラスの効果は絶大ですね。本当に開発しやすそうです。
まだコントロールの作り方の記事書いてないな。
System.ComponentModel.Componentを継承するだけなんだけど、
まぁそれじゃ何のことかわからんしねぇ。
以前から気になってた、Perl 5.10の新機能の話。
最新のActivePerlを使ってると、もう5.10になってます。perl -vで確認できますね。
ActivePerlにせよ、Linuxでのperlにしても、全部同じperlなんだよね。
何でもバージョンはperl -vで確かめられるし、バージョンの意味もどれでも同じ。
さて、しかしどういうわけか5.10の新機能はそのままでは使えない。
use feature ':5.10';
ものぐさな人はこれだけ書けば新機能が全部使えます。
自作perlshにこの1行を適当に加えてみると、簡単に試せますね。
さて、もっとも大きいかもしれないのが、sayですね。
say $foo;
print $foo,"\n";
sayは改行付きのprintです。今までなかったんですよ。
まぁこういうことです。今まで別に入れてた改行を考えなくてよろしいと。
しかし、sayですか…なんというかPerlというのは紛らわしい名前が多いものでして。
あと、以前何も考えずに使ってた5.10の新機能。//演算子ですね。
$1//$2とすると、$1がundefでなければ$1、undefならば$2というようなことができると。
非常に便利なものです。
そういえばC#にも??演算子という、a??bとするときa!=nullならばa、違えばbとなる演算子があるはず。
まぁあまり使い道はなかったのかな。使ったことないや。
あと、Perl式switch構文、given~when、foreach~when構文。
見てたけど仕組みはさほど難しくないですね。
while(1){
given(<>){
s/\n$//;
when(m/([0-9]+)/){ say 'catchnum:',$1; }
when('foo'){ say 'fooooooooo!'; }
default { say 'cannot catch!'; last; }
}
}
さて、givenで与えて、whenにあてはまるかどうかという話です。
さて、いろいろ見てたのだが、どうもgivenで与えたものは、$_に入るらしい。
それでwhenの中身を評価してTrueだったり、'foo'みたいに値が入ってたらそれと比較すると。
まぁそれだけの仕組みです。だから一番始めにs/\n$//という処理を書いたときうまく動くんですね。
$_ =~ s/\n$//;って意味ですからね。なかなかよくできている。
given~whenだけでなく、foreach~whenという使い方もあると。これは便利じゃないですか?
foreach(2..100){
when($_%2==0){ say "偶数 :$_"; }
when($_%3==0){ say "3の倍数 :$_"; }
when($_%5==0){ say "5の倍数 :$_"; }
when($_%7==0){ say "7の倍数 :$_"; }
default { say "素敵な数:$_"; }
}
まぁこんな風にかなり不気味なこともできます。
普通はこういうのはif~elsif~elseで書くと思うのですが、なかなかありがたい構文ですね。
ただ、現状ではこういう表記ができないのは少し残念。
say "7の倍数 :$_" when($_%7==0);
なんか英語の文章みたいですね。
when修飾子はまだないと。
しかし多くの人にとってはわかりにくい表現なのでない方が平和ですかね?
まぁ他にもいろいろあるんだけどね。
あるところの記事を読むとPerl 6の先行公開みたいな、そういうような意味合いもあるそうです。
~~演算子というのが追加されたのだが、これはスマートマッチ演算子らしい。
==とeqの使い分け、リストの各要素とのマッチとか、そういう賢い演算子らしい。
これはPerl 6で導入されるものの1つらしい。もしかすると比較演算子は~~ですと言われる時代がくるかも。
しかしこんなものでは言えないぐらい、Perl 6になるとかなり変わるんですけどね。
非常によくつかう文字列の.での結合は廃止になるし。.はオブジェクト指向で使われるみたい。
あまりの変化にPerl 6に移行しない人がどれほどいることか。
あと、Perl 6なのだが、Parrot上で動作させる都合なかなか難しい。
なんというかとんでもない大改造になることは目に見えてるというわけですね。
Perlってむちゃくちゃですねという感想でいいと思いますよ。
Author : hidemaro
Date : 2008/10/02(Thu) 23:42
Perl・PHP・Ruby・Python | Comment | trackback (0)

Tools