Perl入学式復習問題2013-4-3

復習問題3つめ。Gistを貼る機能がはてブロにあったので使ってみる。

設問はこれで

my $data = q{
    papix : sushi
    moznion : soba
    boolfool : sushi
    macopy : sushi
};

food.pl では, 上記のように, $data に人物名と好きな食べ物を (スペース):(スペース) 区切りで与えています.
この変数から食べ物が何回出現したかカウントして表示させてください.
・はじめに $data を改行ごとに split するとよいでしょう
・分割後, 正規表現により必要な文字列を抽出してください

出力は

4

感想としては、ヒントなかったらかなり時間かかったかも、という。配列にしてforで回す、ということをしましたが、そういう発想できなかったし・・

あと謎2点。

  • 「q{};」という書き方、初めて見た。これって配列を「qw」で書くやつのハッシュリファレンス版、みたいなものだろうか?
  • そもそも「(スペース):(スペース)」で区切られたこの「q{};」というのはなんでしょう、ハッシュリファレンスなんでしょうか。それとも文字列的な何か・・単にデータ、としてか言えないようなものなんでしょうかね・・まあ呼び方はなんだっていい、ということもあるのかもしれないけれど。

ともあれ直近の復習問題はひとしきりさらい終わり、間違い勘違いもあると思うけど、ここからスタートでまた復習できればと。

現状、過去問ではこの「vote.pl」がまだあんまり理解できてない・・
https://github.com/perl-entrance-org/workshop-2013-03/blob/master/practice.md#votepl

これの4番。たぶん、講座の中で出てきてない(または一瞬触れた程度の)方法が使われてからだと思うんだけど・・どこがその「習ってない」部分なのかも理解しきれていないのでそこ明確にして、次の第5回で機会があれば質問とかしてみる。