「優れたPerlプログラマを見分ける27の質問」にチャレンジしてみる。
念のため続きを読むで答えてます。
(3/2 参考を追加)
解答と成否
解答は、dan先生のところから!
△つけてるのは、優しい人が採点してくれたら○かもね、って甘えです。
1. Perl5において変数のシジルが示すものは何か
回答:スカラか配列かハッシュか
成否:△
△すらも怪しい気がする。
2. 配列のアクセスする際の $items[$index] と @items[$index] の違いは何か
回答:後者は、配列のスライス
成否:△
3. == と eq の違いは何か
解答:数値比較か文字列比較か
成否:○
4. ハッシュをリストコンテキストで評価すると得られるものは何か
解答:keyとvalueがまとまった配列
成否:△
言いたいことは合ってるんだけど、○付けてもらえる解答とは言えない。
5. Perlドキュメントからキーワードを検索するにはどのようにするのか
解答:?
成否:☓
perldocで検索出来るのか…知らなかった。
6. Perl5における関数とメソッドの違いは何か
解答:オブジェクトのリファレンスを第一引数として受け取るものがメソッド
成否:○
7. Perl5が変数のメモリを再利用するのはいつか
解答:変数がスコープから外れたら。
成否:☓
勉強しておきます。
8. 変数のスコープがデフォルトでレキシカルであると保証するにはどのようにするのか
解答:my をつける
成否:△
宣言するってつけないとだめだよね。
9. モジュールからシンボルをインポートするにはどのようにするのか
解答:use Hoge qw/ fugo /;
成否:☓
全然違った!設問の意味もよくわかってなかった。
11. Perl5のエラーメッセージの検索はどのようにするのか(発生するエラーメッセージに説明を加える方法を知っていればボーナスポイント)
解答:?
成否:☓
diagnostics のことは知っていたけど…。
12. 配列を関数に渡したときに起きることは何か
解答:リストコンテキストとして解釈され、配列の要素は @_ に個別に格納される?
成否:☓
参照がセットされるんだ…知りませんでした。
13. 複数の配列をそれぞれ区別して関数に渡すときにはどのようにするのか
解答:配列のリファレンスとして渡す
成否:○
14. 呼び出された側から見た return; と return undef; の違いは何か
解答:?
成否:☓
言われてみると納得。
呼び出し元のコンテキストの事は失念してた。
15. 標準的CPANディストリビューションではテストはどこに置かれるか
解答:t/ 以下
成否:○
16. 標準的CPANディストリビューションでテストを走らせるにはどのようにするのか
解答:make test, prove -b t/
成否:○
17. CPANから新しいディストリビューションをインストールする際に使うコマンドはなにか
解答:cpan, cpanm
成否:○
18. 組み込み関数openを3引数形式で使うのは何故か
解答:なんだっけ…。はじめてのPerlで見た気がするけど覚えてない。
成否:☓
安全性の一言でよかったんだ…。あとの祭り。
19. openのようなシステムコールのエラーを検出(と報告)するにはどのようにするのか(エラーの検出と報告を自動的に有効にする方法を知っていればボーナスポイント)
解答:or die $!;
成否:○
○でいいよね…。
20. Perl5で例外を投げるにはどうするのか
解答:eval の中で die する。
成否:○
21. Perl5で例外を捕捉するにはどうするのか
解答:evalの外で $@ を確認
成否:○
22. ファイルの読み込みにおけるforとwhileの違いは何か
解答:?
成否:☓
あとで確認しよう。
23. メソッドと関数においてパラメータを取り扱うにはどうしたらよいか
解答:@_ を使う
成否:○
24. my ($value) = @_; の変数を囲む括弧が意味するものは何か、またこの括弧を取り除くと何が起きるか
解答:リストコンテキスト。カッコを取り除くと、@_ の要素数を取得することになる。
成否:○
25. new は組み込み関数ないしキーワードか
解答:No
成否:○
new Hoge; って書き方も出来るけど、このこと知ってからはあえて使わないようにしてる。
26. コアライブラリやCPAN モジュールのドキュメントを読むにはどのようにするのか
解答:perldoc コマンドをつかう
成否:○
27. ハッシュの値のみを取り出したい時はどのようにするのか
解答:values をつかう。my @values = values %hoge;
成否:○
結果
○ … 14
△ … 4
☓ … 9
まだまだ勉強不足。