初めてのPerl その1(1〜2章)
CGI+Perlで何か作ってみたくて、初めてのPerlを購入した。
今日から少しずつ読んで内容を簡単にまとめようと思う。
※まとめ内の注釈は、本書に書いていない自分用メモ。間違っている可能性あり。
※初版が2003年だから*1少し古い内容もあるかもしれない。
1章 Perl入門
2章 スカラーデータ
数値
文字列
- シングルクォート文字列リテラルとダブルクォート文字列リテラルがある*3。
- シングルクォート文字列リテラル
\'
と\\
を除く全ての文字が単なる文字と認識される。
- ダブルクォート文字列リテラル
- バックスラッシュでエスケープシーケンスを使える。
- 文字列演算子
.
演算子(文字列の結合)
"Hello" . "world" # → "Hello world"
-
- 文字列繰り返し演算子(
x
)
- 文字列繰り返し演算子(
"Perl" x 3 # → "PerlPerlPerl" 5 x 3 # → "555"
数値と文字列の自動変換
- 演算子によって数値と文字列を自動変換する。
- 例えば、
+
の左は数値、.
の左は文字列。 - 数値変換する文字列は、末尾にある数字以外の文字と先頭の空白は無視される。
- 数値が無い場合は0に変換される。
12testt34
は12
に変換される。
print
演算子
- printでコンソールに出力する
- カンマ区切りで、複数の文字列を渡せる。
print "Hello", " world\n"
- ダブルクォート内のスカラー変数名は値で置き換えられる。
$obj = "pen"; print "They are two ${obj}s." # → "They are two pens."
標準入力
を使う。
が返す文字列には、末尾に改行文字が含まれる。
chomp
演算子
- 末尾が改行コードの文字列に対して、改行文字を削除する。
- 良く使うイディオム:
chomp($text = <STDIN>); # 末尾の改行文字を削除してテキストを読み込む
- 戻り値として取り除いた文字の個数を返すが、あまり役に立たない。
- ファイルの終わりの場合、変数の値は
undef
。
defined
関数
- 引数がundefならば偽、それ以外は真を返す
- ファイルの終わりまで読み込むイディオム:
while (defined($line = <STDIN>)) { # do something. }
その他
- 特に理由がある場合を除き、入力は必ず
chomp
すること。 - Perlのモットーは、"There Is More Than One Way To Do It."。
とりあえず
今日はここまで。