PerlとCとの相違点(その1)

  • 投稿日:
  • by
  • カテゴリ:

「Perlの絵本」
著者 アンク 

久しぶりなので、ちょっと長めに
この本を読んでCとPerlとの文法的な違いをまとめてみました


変数の前に$をつけ、明確な宣言というものがない
文字列を変数として扱う
"文字列"."文字列"ピリオドで文字列同士をつなぐことができる
"z"x3で"zzz"という意味をあらわすなど掛け算もできる
文字列比較演算子を使って文字列の比較ができる

配列
@を付けてあらわす
添え字にマイナスを使って逆から数えることができる
$a=@bでは要素の個数を代入する
$#aで要素数をあらわす

連想配列
%をつけてあらわし、キー(変数名)と値を持った配列とそれらの要素の追加・削除ができる

アドレス
\$pのように記述するとアドレスをあらわし、SCALAR(xxxx)のように表示される
\\pでアドレスを参照

型グロブを使うことで同じ名前の変数、配列、連想配列が作れる
$a @a %aを作った後で*b=*aで型グロブ


制御

foreach$a(@b)
配列とともに使い、配列のすべての要素に対して処理を行う
bが配列、aが取得した値 aを省略した場合は、特殊変数$_で表すこともできる

unless(条件)
条件を満たさなければ実効

until(条件)
条件を満たすまでループ

continue
これが書かれた後の分は、次の繰り返しの最初に実行される

ラベル
ループするブロックにラベルをつけて、それを元に制御できる。
Label1:while(~){~

~}

next Label1;
これが実行されると、そのラベルのついたブロックの始まりにジャンプする

redo Label1;
これが実行されると、そのラベルがついたブロックをやり直す

last Label1;
ラベルのついたブロックの外まで移動

正規表現を使ってあいまいな文字列を指定できる
パターンマッチとあわせて、文字列検索が容易にできる

サブルーチンの呼び出しは定義の後でも先でもどちらでもよい