Hatena::Groupperl

Perl Study Memory

There is a difference between knowing the path and walking the path.

自己紹介  | 初めてのPerl 第3版  | 続・初めてのPerl 改訂版  | アーカイブ  | 参考書籍・推薦図書

 | 

2010-04-02

Perlポケットリファレンスは、もう必要ない?

| 00:32 | はてなブックマーク - Perlポケットリファレンスは、もう必要ない? - Perl Study Memory

こんばんは、AzureStone(あーじゅ・すとーん)です。

今日は、職場に新しい方がいらしたので激しく緊張した今日この頃です。

さて、先日のuse utf8;を調べていた際に気づいたことがあったのでそれについてお話しします。

先に結論から言うとperlについて分からないことがあれば、まずGoogleや書籍に走るのではなくperldoc.jpで調べ物した方がよいということでしょうか。

本当は、かっこよく「Perl programming documentation - perldoc.perl.orgを読むべきです」と言うべきなんでしょうが、、、

なにせTOEIC 200点の私には、とてもじゃないですが、そんなこと胸を張って言えません。

あっ、最新ですと155点でした。すいません、見栄張っていました。

何故、そのような結論を出したのかを説明したいと思います。

ちなみにこれが正しい手法だと主張しているわけではありません!!!

初心者の方、注意してくださいね!

ちなみに僕は立場上、素人と言えても初心者とはもう語れなくなったのでどうしたものか・・・。

この文章で間違っているところがあれば教えてください!!!!!!お願いします。

先日、コメントである方からlength()の仕様について教えて頂きました。

それまでlength()は、バイト数を計算するものだとばかり思っていました。utf8プラグマを使用することでどっかでいい感じにlengthに文字数を代入してくれているものばかりだとも勝手に思っていました。

ところが、先日いただいたコメントを読んでみるとこれまで思っていたlength()の仕様とは大きく違いました。どうしてそんな挙動を知っているだろうか?と考えていました。またスーパーハッカー特有のソースコードを読めばわかるという類のものなのかとばかり考えていました。しばらくそれを検証するにはどうしたらいいのか考えてました。Googleでlength()を検索していました。ヒットした情報がたくさんありました。一つだけマニアックな情報を除いては、僕の認識を大きく変えるようなことを記したWebサイトは見つかりませんでした。しかし5分ぐらい経った頃、perldoc perlfuncを読めばいいことに気がつき、以下のように実行してみました。

ところが、

azurestone@nsa01:~$ perldoc -f length
  length EXPR
  length  Returns the length in characters of the value of EXPR.  If EXPR is omitted, returns length of $_.  Note that
          this cannot be used on an entire array or hash to find out how many elements these have.  For that, use "scalar
          @array" and "scalar keys %hash" respectively.

          Note the characters: if the EXPR is in Unicode, you will get the number of characters, not the number of bytes.
          To get the length of the internal string in bytes, use "bytes::length(EXPR)", see bytes.  Note that the
          internal encoding is variable, and the number of bytes usually meaningless.  To get the number of bytes that
          the string would have when encoded as UTF-8, use "length(Encoding::encode_utf8(EXPR))".
azurestone@nsa01:~$

期待は、していませんでしたがやっぱり英語でした。これくらいの英文だったら和訳しながら読もうかと思いましたが、すぐに飽きてきました。いえ飽きたというよりも早く先に進みたいといったところでしょうか?

そんなこんなでだめもとでGoogleの検索エンジンで

site:perldoc.jp  length

と入力し検索してみるとあらっ!まぁ!なんと!今使っているPerl 5.10.0の情報が出てきます。

非常に驚きました。何故、驚いたかというとperldoc.jpって僕の中では、もう終わった古いプロジェクトだと思っていたからです。それは、僕の勝手な思い込みでした。どうやら調べてみると目立ってはいませんが、現在進行中のプロジェクトのようです。

そう判断するに至ったURLを載せておきます。

石垣さんが執筆されている情報の方が、わかりやすいと思います。charsbarさんの方は、少し(?)過激な表現が多いので読むと驚くかもしれません。。。

もしかしたら他のドキュメントも日本語化されているのではと期待を胸に膨らましつつディレクトリを掘ってみると期待通り良いドキュメントがありました!!!

URLを下記に載せておきます。


これを読んで理解すればスーパーハッカーに近づけるかも?と思ったぐらいでした。

ということで今回は、Googleで無闇矢鱈に関数を検索するよりもperldoc.jpで探せばちゃんと正しい情報が手に入りますよ!ということを伝えたかったです。

ちなみにlength()をGoogleで検索したときに見たWebサイト

これを見ている方へperldoc.jpと上記のサイトを比べてみてください。あることに気がつくと思います。

気がついたことは、胸にそっとしまっておきましょう。。。

さて次回は、perldoc.jpからデータをダウンロードしてvimから特定の関数を検索するまでをやってみたいと思います。ちなみに現時点でまだ実現していません。理由は、またもやUTF-8EUC-JPにやられています。汗、、、

まあ、ここさえ頑張ればオフラインでも開発が、できるのでやってみようと思います。

(;^_^A アセアセ…

本日おすすめの関連書籍

CGI & Perl ポケットリファレンス (Pocket reference)

CGI & Perl ポケットリファレンス (Pocket reference)

vkgtarovkgtaro2010/04/02 20:24石垣さんと charsbar さんは同一人物ですw

azurestoneazurestone2010/04/02 23:52(;^_^A アセアセ…

とおりすがりとおりすがり2010/04/10 13:36英語のドキュメントでもしつこいくらい読み続けるとTOEICの点数が職場で最低点だった自分でも読める様になりましたよ。しつこくって所がポイントです。

WillieWillie2011/06/05 18:46Hey, good to find someone who argees with me. GMTA.

rkfcbwprkfcbwp2011/06/06 18:32HDmKy5 <a href="http://fvgpuqvtsdpc.com/">fvgpuqvtsdpc</a>

uduglicvuduglicv2011/06/06 22:31pCSv4t , [url=http://yuhhwvclovrx.com/]yuhhwvclovrx[/url], [link=http://melhhngjdewk.com/]melhhngjdewk[/link], http://csaqnlvmtrvm.com/

vwhkoevwhkoe2011/06/07 18:353CLyhu <a href="http://vurzmcnhhpld.com/">vurzmcnhhpld</a>

mneatromneatro2011/06/09 18:53JmJS8Z , [url=http://whedsvidgsex.com/]whedsvidgsex[/url], [link=http://vdpwielxyfii.com/]vdpwielxyfii[/link], http://borwpxxvvclr.com/

AnjaliAnjali2012/08/20 16:03Craeted the greatest articles, you have.

bthytucuvrbthytucuvr2012/08/21 17:12WoUo2k <a href="http://djfitcsgegfk.com/">djfitcsgegfk</a>

czpvbunczpvbun2012/08/22 15:44CKNas2 <a href="http://vzbxflfdcblg.com/">vzbxflfdcblg</a>

wdsyojhiippwdsyojhiipp2012/08/24 22:33P3Ry1j , [url=http://sukvdvpgpgcy.com/]sukvdvpgpgcy[/url], [link=http://tsetsqtieicy.com/]tsetsqtieicy[/link], http://qpbfygcwccgp.com/

 |