なからなLife

geekに憧れと敬意を抱きながら、SE、ITコンサル、商品企画、事業企画、管理会計、総務・情シス、再び受託でDB屋さんと流浪する人のブログです。

「初めてのPerl」を読んでいて、「へぇ」だったこと。その2

注意:「初めてのPerl」を読んでいて、「へぇ」だったこと。 - なからなLifeの続きです。


5章 ハッシュ

ハッシュにアクセスするときのキー指定に、正規表現が使える。

$family_mame{"fred"} = "flintstone";
$family_mame{"barney"} = "rubble";
$foo = "bar";
print $family_name{$foo . "ney"};

で「rubble」が表示されるとな。



ハッシュにリストを格納するとき、コンマ区切り or 「=>」を使う。
それだけでなく、最後にコンマを「つけてもつけなくてもよい。」
これ、ループでリスト作るときとか、他の言語だと必ず処理加えなきゃいけないからねぇ。

%hash = ("key1"=>"Value1"、"key2"=>"value2",);


ハッシュのキーに対してundef入れても、キーは存在し続ける、のね。
消したければdelete使うと。

6章 入出力の基本

while(){
  print "I saw $_";
}

foreach(){
  print "I saw $_";
}

は違うと。


whileは1行ずつ受け取って処理し、undefが来たら停止。$_はショートカットとしての意味。
foreachはリストを全部受け取って、デフォルト変数$_で処理する。
メモリの使い方が違う(whileの方が少ない)と。<>を「ダイヤモンド演算子」とは斬新な。
起動引数を受け取る。ファイル名は@ARGV(予約語?)に、中身は通常whileで処理し、$_に入る。


chompに引数を省略すると、$_に作用する。


printfが使える。ただし、配列をprintfするときは、要素の数だけフォーマット指定する必要があり、そのためにはフォーマット指定文字列を動的に組み立ててあげる必要がある、というかそれができる。


練習問題6-1:「tac(catの逆順))のようなプログラムを書け。
答え:

print reverse <>;

恐れ入りました。



というわけで、6章まで読了。
思ったより引っかかった。時間かかった。亀さんな自分。


次は7章、正規表現か。さらに時間かかりそうだ。