Perl Hackers Hub

第7回 新人さんのための仕事で使えるPerl基礎知識(3)

この記事を読むのに必要な時間:およそ 4 分

リファレンスの型を調べる

リファレンスの型が何であるかを調べるには,Perlの標準関数refを使います。リファレンスの型が文字列(ARRAYやHASHなど)で返ります。次のようにif文など条件分岐させて使うことが多いです。

my $man = {'name' => 'Hideo', 'age' => '40'};

if ( ref($man) eq 'HASH' ){
    print "man is HASH";
}

Perl 5.14からデリファレンスが変わる!!

今後リリース予定のPerl 5.14以降では,配列やハッシュを受け取る標準関数に対し,配列リファレンスやハッシュリファレンスを直接渡すことができるようになります。

今までは,

my $array_ref = [1, 2, 3, 4];
push @{ $array_ref }, 5;

と書かなければなりませんでしたが,Perl 5.14からは,

my $ref = [1, 2, 3, 4];
push $ref, 5;

と書けるようになり,リファレンスの扱いが非常に簡潔になります。これは革新的なアップデートであり,今まで{}を付けるかどうか悩んでいた人には朗報でもあります。

また,keysやvalue,eachなども同様に,%{}@{}を付けて明示的に何の型のリファレンスであるかを表現しなくてもよくなります。

for ( keys %{$hoh->{hok}} ) {...} # Perl 5.12以前
for ( keys $hoh->{hok} ) {...} # Perl 5.14以降

本稿執筆中には,正式版のPerl 5.14はまだリリースされていませんが,開発版のPerl 5.13.xをインストールすることによって試すことができます

リファレンスは怖くない

本節では,リファレンス/デリファレンスや複雑なデータの扱い,今後のPerlでのデリファレンスの方法を説明しました。CPANにもたくさんのコードがあるため,実際にコードを書いて少しずつ実践して慣れることが,何よりも学ぶ機会となるでしょう。

Perlにはperldocと呼ばれるたくさんの公式ドキュメントがあり,有志によって日本語訳されているマニュアルがあります。基本の説明やチュートリアル,FAQなどの内容も充実していますので,ぜひ目を通してください。

Perlのリファレンスに関する概要ドキュメント
http://perldoc.jp/docs/perl/5.10.0/perlref.pod
Perlのリファレンスに関するチュートリアル
http://perldoc.jp/docs/perl/5.10.0/perlreftut.pod

おわりに

今回は「新人さんのための仕事で使えるPerl基礎知識」というテーマでしたが,いかがでしたでしょうか。本稿により,つまずきがちな点が少しでもクリアになっていただけるとうれしく思います。

次回の執筆者は広木大地さんで,テーマは「多人数でのチーム開発技法」を予定しています。お楽しみに。

著者プロフィール

横山彰子(よこやまあきこ)

大阪時代からWebシステム会社を数社経験後,2010年から本格的にフリーランスのエンジニアとして活動。現在もECサイト,新規サービスの立ち上げなどの開発支援を行う。

Perl Casual,Shibuya.pm,YAPC::Asia2010などスピーカーとして登壇。個人でも2008年からSmiley Hackathonやwebrick cafeなど勉強会の主催をしている。

Twitter:acotie

mail:acotie.acotie@gmail.com

URL:http://poccori.com