参考
- http://d.hatena.ne.jp/perlcodesample/20091226/1264257759
- ミニマル perl
スクリプトを書く時
用語
レコード
- 1つのまとまりとして読み書きされる文字の集合
- 入出力の際、ファイルはレコードの集まりと見ることができる。
この時、デフォルトでは、1行がレコード。
入力レコードセパレータ
- 入力レコードの終端区切りを表す文字、または文字シーケンス(文字の並び)。
- Linuxとかでは、デフォルトではラインフィード。
- Perl ではOS固有の入力レコードセパレータを \n として、参照できる。
ニューライン
- \n のこと。
- OS固有の入力レコードセパレータ。
スイッチ引数
- -s オプションを利用することで、良い感じの引数を取ることができる。
- 引数の与え方で2つの方法がある。
-foo='test' #=> $foo == 'test'
-foo #=> $foo == true : -debugで、デバッグ用、みたい使う。
- スイッチ引数を任意にしているスクリプトでは、冒頭にour関数を使うのが良い。
our(foo);
our(foo, $bar, ...);
真偽値
偽になるのは、次の3パターンある。
- 数値 : 0 と同等な値
- 文字列 :
- null文字列
- 0 を保持する文字列 ( '0' みたいな)
- 変数 : 値を持たない変数
- まだ設定されていない変数とか。定義されているかは、 defined を使うとわかる。
特別な文字列
$/,$\
$.
- 今読んでいる入力レコードが何番目かを表す。
- 通常は行数。
- コマンドラインオプションや $/ で入力レコードセパレータを指定したときは行数じゃなくなる。
$_
@ARGV
<>
\n
変数
$var : 変数
- 宣言と代入
my $var = 'aaa';
- '' と ""
シングルクォートとダブルクォートの違いは、変数が展開されるかどうか。
- join (.), split, length, substr, index
@array : 配列
%hash : ハッシュ
制御構文
if { ~ }
if { ~ } else { ~ }
if { ~ } elsif { ~ }
while ( 条件 ) { ~ }
for ( my i = 0; i < 5 ; $i++ ) { ~ }
foreach my $field (@fields) { ~ }
- 配列の各要素に対して何かを行う
- foreach は for のエイリアスらしい。
比較演算子
文字列比較
- $s eq $t
- $s ne $t
- $s lt $t
- $s gt $t
- $s le $t
- $s ge $t
サブルーチン
関数のようなもの。
他の言語との違いとして、引数を関数宣言に書かない。
そのかわり、 @_ を使って引数にアクセスする。
sub subtract {
my ($num1, $num2) = @_;
my $result = $num1 - $num2;
return $result;
}