読者です 読者をやめる 読者になる 読者になる

akimachoのはてなブログ

ICTとデザインのためのブログ

Perlのプリミティブなデータ表現メモ

f:id:akimacho:20150303201535j:plain

イントロ

"PerlベースのWebアプリ作成を「委譲」する際のスキルチェックリスト20"という記事が公開されています.

タイトルにあるスキルチェックリストとは次のようなものです.

  1. HTML/CSS/JSが無理なく書ける
  2. Perlのプリミティブなデータ表現、つまりスカラー、配列、ハッシュを理解している
  3. リファレンスを使いこなして複雑なデータを表現したり操作出来る
  4. bless関数によるオブジェクト作成とMoose/Mouse/Mooの使用
  5. システムPerlではなくperlbrewもしくはplenvでコンパイルしたperlを利用している
  6. cpanシェルではなくcpanmでモジュールをインストールしている
  7. PSGIについてアプリの返却値が配列リファレンスである等、仕様についておおよそ知ってる
  8. psgiファイルを書いてPlack::Middleware::*を使った経験がある
  9. Catalyst/Mojolicious/Amon2などWeb Application Frameworkを使ったアプリ制作経験
  10. Cartonの利便性について語れる
  11. URI/LWP::UserAgent/JSONあたりのモジュールを組み合わせWeb APIを利用出来る
  12. PSGI互換サーバによる本番環境の構築、デーモン化
  13. nginx+リバースプロキシなどによるフロント+アプリサーバ構成をつくれる
  14. 静的コンテンツ配信の最適化、フロントエンドのチューニングが出来る
  15. MySQL/memcachedの環境構築、運用経験
  16. 何らかの形でMySQL/memcachedPerlコードで利用出来る
  17. TAPを理解しTest::Moreを使ったことがある
  18. Amazon AWSに対して例えばec2など、経験とノウハウを多少でも持っている
  19. GearmanなどのJob Queueを使用して非同期という概念を把握している
  20. 最低限のGitコマンドを理解している

Perlでアプリを作るために必要なスキルが一覧できて参考になりますね.

さて私もWebアプリ作りに興味があるので,今日からスキルチェックリストの項目を1つずつチェックしていきたいと思います.

というわけで,今回は"Perlのプリミティブなデータ表現、つまりスカラー、配列、ハッシュを理解している"について書いていきます.

スカラー

数や文字列といった単純なデータをスカラーと呼びます.

スカラーの変数宣言と代入

my $num;#変数numを宣言
$num = 5;#変数numに5を代入する
#my $num = 5;と省略可能
my $str;#変数strに'Hello'を格納する
$str = 'Hello';#変数にstrに'Hello'を代入する

リストと配列

スカラーを並べたものをリスト,リストを格納するものを配列と呼びます.

リストの宣言・代入

my ($a, $b, $c);#複数の変数をリストとして宣言
$a = 1;#それぞれに値を代入する
$b = 2;
$c = 3;
#以上の操作は次のように省略可能
#my ($a, $b, $c) = (1, 2, 3);

配列の宣言・代入

my @array;#配列の宣言
@array = (1, 2, 3);#配列にリストを代入
#以上の操作は次のように省略可能
#my @array = (1, 2, 3);

配列の要素への参照

my @array = (1, 2, 3);#配列を宣言し,リストを代入する
print $array[0],"\n";#配列の0番目の要素を参照し,1を出力
print $array[1],"\n";#配列の1番目の要素を参照し,2を出力
print $array[2],"\n";#配列の2番目の要素を参照し,3を出力

ハッシュ

ハッシュとはあるスカラー(key)にスカラー(value)を対応させたデータのことをいう.

ハッシュの宣言

my %hash;#ハッシュの宣言
%hash = ('a', 1, 'b', 2, 'c', 3);ハッシュにリストを代入する.
#次のようにも書くことができる
my %hash = ('a' => 1, 'b' = 2, 'c' => 3);

ハッシュの要素への参照

my %hash = ('a' => 1, 'b' = 2, 'c' => 3);
print $hash{'a'}, "\n";'a'に対応する1を参照し出力
print $hash{'b'}, "\n";'b'に対応する2を参照し出力
print $hash{'c'}, "\n";'c'に対応する3を参照し出力

おわりに

前のブログに書いた記事を,改めてこのブログの記事にしました.