2012年06月04日

日本人が金環日食で騒いでる待っただかにリリースされた事で有名な Perl 5.16 ですが、ちょっとまえに僕が Hokkaido.PM Casual で新機能の見所プレゼンしてて、折角なのでブログにも書いとこうと思いまして転載仕様かなーと。

More CORE subs are callable through references

コア関数のコードリファレンスを取れるるようになります。たとえば文字列フィルタリングをユーザが差し替え可能なモジュールとか作る時に捗るって jsx が言ってました。

use strict;
use warnings;
use 5.016;

# ここの関数テーブルをユーザの好みに差し替える
# 基本はコア関数を使う
my %func_map = (
    index  => \&CORE::index,
    splice => \&CORE::splice,
    ...
);

Unicode Symbol Names

シンボル名を処理する時に utf8 フラグを無視して処理するバグが治りました、日本語関数とか作ってる人に影響があります。

use strict;
use warnings;
use 5.016;
use utf8;

sub 弾 { say('小飼') }
# utf8 フラグ付きだから問題無く呼べる
my $dankogai = \&{"弾"};
$dankogai->();
do {
    no utf8;

    # utf8 フラグ立ってないのでシンボル名解決出来ない
    # ただし 5.14以前だと utf8 フラグ無視してるので動く
    my $dankogai = \&{"弾"};
    $dankogai->();
};

Support for Embedded Nulls

今まで文字列変数に \0 が入ってると、様々な場面で文字列が \0 以前で終端に達していたが、その挙動が無くなった。 \0 は \0 として内部的に扱われるようになった。
何かって言うと、今まで LL なのに \0 を文字列終端子として処理するバグが Perl の一部の機能に入ってたって事。

use strict;
use warnings;
use 5.016;

sub foo { say('bar') }
main->foo;

my $baz = "foo\0hoge";
{
    no strict 'refs';
    *{$baz} = sub { say($baz) } ;}

    # 以下は 5.14 以前では foo が呼ばれ、 5.16 以降では foo\0hoge が呼ばれる
    main->$baz;

Autoloaded sort Subroutines

sort の第一引数に関数をそのまま渡せる仕様があるんだけど、そこの関数を AUTOLOAD で処理出来るようになった。何に使うかよーわからん。けど ORM で捗るのかな?

use strict;
use warnings;
use 5.016;
use Test::More;
our $AUTOLOAD;
sub AUTOLOAD {
    my($key) = $AUTOLOAD =~ /([^:]+)$/;
    return 0 if $a eq $b;
    return -1 if $a eq $key;
    return 1 if $b eq $key;
    return 0;
}

my @list = qw/ foo bar baz /;

# foo を一番最初に持ってくるソート
my @foo = sort foo @list;
is($foo[0], 'foo');

# bar を一番最初に持ってくるソート
my @bar = sort bar @list;
is($bar[0], 'bar');

# baz を一番最初に持ってくるソート
my @baz = sort baz @list;
is($baz[0], 'baz');
done_testing;

__SUB__

いわゆる arguments.callee。どっかのサンプルコードで無限ループするのが乗ってて恐いと思ってこのエントリ書こうと思ったんだった。

use strict;
use warnings;
use 5.015;
use Path::Class;

# 主に無名関数で使う。名前がついてるなら __SUB__ とか使う意味ない
my $walker = sub {
    my $dir = shift;
    for my $path ($dir->children) {
        if ($path->is_dir) {
            __SUB__->($path);
        } else {
            say $path;
        }
    }
};

sub runner {
    my($caller, @args) = @_;
    $caller->(@args);
}

runner $walker, dir('/');

まとめ

Perl 5.16 の新要素で僕がちょっと興味引いた物の紹介をしました。5.10から5.14の間のトピックスを知りたい人は、来週出る Web+DB PRESS の Perl 連載で cho45 先生が言及してるので読むとよいでしょう。

WEB+DB PRESS Vol.68
WEB+DB PRESS Vol.68
posted with amazlet at 12.06.04
名村 卓 三宅 陽一郎 小野 修司 中島 聡 森田 創 小飼 弾 田籠 聡 天野 祐介 cho45 大和田 純 白土 慧 勝間 亮 石田 忠司 牧本 慎平 A-Listers 近藤 宇智朗 はまちや2 mala じゅんいち☆かとう
技術評論社
売り上げランキング: 4256

第1部

かのんとすれ違い用の3DS発掘してたらまさかの10分遅れではいれづ。。。

第2部

「こんばんわー」
あんにん「わぁー」
「岐阜の公演いったよ、よかったよ!」
あんにん「ありがとうございますー」
「えっと、あっと」
あんにん「またきてくださいね」
「またくるよー」

時間配分間違えて何言いたいかわからなくなった。。。

「こんにちわー岐阜の公演いったよー」
みゆ「えーほんとですか?」
「うん、とってもよかったよー」
みゆ「わーうれしいありがとうございます」
「うんまたいくよー」
「またきてくださいねー」
ばいばいー

公演で見た時よりもおとなっぽくなっておった。

「岐阜公演行ったよー」
島田「来てくれたんですね」
「ブルーローズかっこよかったよ」
島田「ほんとですか?!嬉しいです」
「あとね、ドラムちゃんと叩けてて最後まで叩いてて感動した!」
島田「ありがとうございます!」
「またいくねー」
島田「またきてくださいー」

やっぱり、カッコいいって褒めたら喜んでくれてよかった

1部2部は岐阜の公演の直後急遽ぶっ込み入れたけど、こうして感想を直接伝えられる機会があるのは良いなと思う。

第3部

ゆうこす「こんにちわー」
「こんにちわー雑誌でしか見たことなかったんだけどね」
ゆうこす「なにかなーヤンアニ?ヤンガン?それともプレイボーイかなぁー」
「や、、ヤンジャ。。 案内「じかんでーす「本物やっぱり可愛いね
ゆうこす「ほんとにぃーー?ばいばーい」

完全にやられた。。。

ゆうこすはもうちょっとゆるふわな感じかと思ったけど、だいぶ釣り師だったぞw

あきちゃ「こんにちわー」
「こんにちわ、えっとねえぎぶみーふぁいぶの時は当たらなくてこれなかったんだけどねぇ、今回当たったからこれたよー」
あきちゃ「よかったぁーありがとー」
時間ですー
「。。。」
あきちゃ「。。。」
あきちゃ「またきてね!」
「うん、またくるよー」

すっかり何話すか考えてなくて自己紹介でおわったぱてぃーん。。。

第4部

あいり「こんにちわ」
「こんにちわー22位おめでとうー」
あいり「ありがとうごさいます」
「本番ではもっと上いけるように
あいり「なれるといいですね
「おうえんしてるよー」
あいり「ありがとうございます」
「またくるねー」
あいり「またきてください」

喉擦り切れるほど調子悪いのに礼儀正しくてええこや

4部はだいぶタイトすぎてて余裕無くて「パパウ!パウパウ!波紋カッター!」って言うの忘れてしまったのが悔やまれるけど、やっぱり実物かわいかった。

あきちゃ「きてくれてありがとー」
「えっ?!」
あきちゃ「きてくれてありがとうーだよ」
「13位おめでとうー」
あきちゃ「ありがとうー」
「来週表たくさんいれるねー」
あきちゃ「(指で三を作りながら)三日後だよ!三日!」
「あっー!」

隣のたかみながテカってなくて可愛くて気が抜けて雑になって怒らせた。。。
帰りに見えた麻里子様もフランス人形で可愛かったなー

また、なんか適当すぎて自分でもどん引きしたけど、怒ってるあきちゃよかった。

「(上のスクリーン見てるな、あこっち気づいた)」
「あっちゃんが引退ってきいてから野菜シスターずの(以下略)トマト」
あつちゃん「たかみなやってるよ」
「そうなんだ」

時間短かった!

あっちゃん素っ気なさすぎて目から潮吹きそうになったくらいだったw
つまんないのか、最後の握手会だからか、自分だけ選挙関係ないか良くわからないけど、ずっと上のスクリーンみててこっち気づかないあっちゃんが印象的だった。

あっちゃんの列に知り合い並んでたから、出てくるの待ってたら「出口に泣きそうになるのを堪えながらむかったら Yappo が立ってたので全部消えてなくなった」とか言われて、その消えた涙が全部こっちに来たのがこちらのブログになります。

夕方の部A

かのん「ありがとうこざいますー」
「44位おめでとうございますわ」
かのん「ありがとうございますー!」
「本番だともっと上の順位絶対行けるよ!」
かのん「はい、頑張ります!絶対選抜入ります!」
「うん、頑張って!おうえんしてるよー!」
かのん「またきてくださいねー」
「うん、くるよー」

やっぱりSKEの子の対応良いなー

かのんとすれ違うために3DS持ってきて遅刻したけど、結局すれ違えなくてしょんぼり。。。

やっぱりSKEの子はどのこも握手会の対応がすっごい良いすな、ちょっとまえにしゃわこの対応がやばいっていうから、何も言わないでしゃわこからなんか言ってくるの待ってたけど見つめられるだけで終わりそうになってあわてて宝塚の話したら凄い食いついて来たけど時間切れって反省があるから、ちゃんと話振らなきゃだめだけど!

第5部A

あきちゃ「んっ、あーあどうも!」
「三日後だよね、まつがえてたよ」
あきちゃ「??」
「今日帰ったら速攻票入れるから安心して!」
あきちゃ「よろしくね、心配になっちゃうよー本当は入れてくれてないんじゃないかって」
「大丈夫、頑張ってね!」

あきちゃにきおくりょくがある事が実証された(俺調べ通算二度め

ほんとは、あきちゃって寿司屋における最後のお茶ポジションだよね。って言いたかったけど記憶力が存外あった影響で計画狂ったけど、一日鍛えられたお陰で美味く切り返した。
ちなみに、うっかり寝ちゃって票はまだ入れてない。

まとめ

朝10時から19時30分までの9時間半の長丁場は流石に体中に答えるので、もうやらないでおこうと思った。
夕方の部が始まる直前に握手できると、裏道に私服の研究生集団がいてだいぶ捗った。

なんにせよ勉強不足がだいぶ仇となった感があるので、僕ももう少しは偉い人達を見習いたいとおもった。

あと、ゆうこすの隣のレーンの江藤彩也香がすっごい可愛いのに列が出来てなくて、暇そうに机直してたり席に座ってたり水飲んだりしてるんだけど、ヲタがきた瞬間にすっごい笑顔で立ち上がるので皆推したら良いと思います。

Posted by Yappo at 2012年06月04日 12:35 | TrackBack | Perl
Comments
Post a comment









Remember personal info?






コメントを投稿する前に↓の場所にnospamと入力してください。