Perl 5.10で遊ぼう

30分プログラム、その612。5.10で導入された新機能で遊んでみよう。
ふと、手元のマシンにインストールされてるPerlのバージョンを確認したら5.10でした。
たしか、5.10は、use featureすればsayとかの新機能が使えるはずなので、それで遊んでみよう。

ヘッダ

まず、新機能を有効にしよう。あと、ついでにstrictとかも有効にしとこう。

#! /usr/bin/perl
# -*- mode:perl; coding:utf-8 -*-

use strict;
use warnings;
use feature qw(switch say state);

say

# say function
say "howdy,world!!";

改行を自動でつけてくれるsay関数。
Perlだから、Hello,worldじゃなくてHowdy,worldだよね。

switch

# switch
my $n = $ARGV[0];
given($n){
    when(42){
	say 'arg is 42';
    }
    when("hoge"){
	say 'arg is hoge';
    }
};

やっと、switch文が使えるようになったんだ。
構文が複雑で、全部は追えなかった。なんかLispのcond的なこともできるらしいよ。

state

# state
sub count(){
    state $i;
    return $i++;
}
say count; # => 0
say count; # => 1
say count; # => 2

static変数。より正確に言うなら、ローカルなstatic変数。