Hatena::ブログ(Diary)

bingo_nakanishiの他言語出身者のためのPerl入門

2009-06-11

第120回 Perlらしく書くための5つの極意

22:53 | 第120回 Perlらしく書くための5つの極意を含むブックマーク

極意1 組み込み関数のカッコは書かない

open my $file, '<', 'hoge.txt';
split //, $c;

組み込み関数と自分が作った関数を一発で見分けられるのは有意義だ。


それに、記号が多いと読み辛い!

Perlが標準で持っている関数くらい覚えているぜ!!

ということをアピールするくらいの勢いで、標準の関数の括弧はなしで!!!!


極意2 変数は必要になったら宣言

my $c = 1;


# $cに関する処理


my $d = 10;

# $dに関する処理

プログラム言語の中には、関数の先頭で変数を宣言しなければならない言語があるが、Perlはそんなことはない!!!

必要になったときに宣言するんだ!!!!!!

後で読んだときに、変数をすべて頭に入れる必要がなくなる!!!!!



極意3 つなげる

my @c = 1..3;
for(reverse @c){ print $_, "\n" }

reverseで配列を逆順にしているが、

その逆順を後で使う必要がないなら、このように書ける。

無駄な変数を用意して、人間の脳細胞に負担をかける必要はない!!

いらないものはどんどん省くんだ!!!!


さらに後置のforを使って、

my @c = 1..3;
print $_, "\n" for reverse @c;

printする 逆順した@cを!


と言う風に前から読みくだせるように書けるぞ!!

英語を後ろから訳すとか言わずに、前から読みくだすのと同じ理屈だ!!!

無駄な変数に代入する事なく、処理は流れるようにつなげていく。



極意4 数字と文字を自由自在に操る

my $c = 1;
my $d = 2;

print $c + $d, "\n";
print $c . $d, "\n";

Perlは文脈によって、変数の中身が数字とみなされるか、文字とみなされるかが変わる。

この文脈を頭に叩き込み、自由自在に数字と文字を使うのだ!!!!!



極意5 forに配列以外を回させる

for(1, 'a', 3, 'x', 'ee'){
 print $_, "\n";
}

forが回せるのは配列だけとは思ってはいけない。

このように、回したいヤツを列挙していけばよいのだ!!!!!




読みやすさには注意!!!

いくら、極意を守るからといっても読みにくくては意味がないぞ!

for(
    reverse
    sub{
      my @c =  @_;
      grep { $_ % 3 == 0 } map { $_ * 2} @c; 
    }->(1,3,5,9)
){
 print $_, "\n";
}

こんなのは読みにくいよ!!!!