2006-10-07 Sat

続、はじめてのPerl

続、はじめてのPerlを再読してみた。

今読んでみると、確かにテストやOOの辺りは薄い。

改訂版が楽しみだ。


投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2006-10-05 Thu

続・初めてのPerl 改訂版

続・初めてのPerl 改訂版が、訳者が変わるわ、監訳者がつくわで、
中身が変わって再登場!!みたいな雰囲気で出るみたい。

普通の「続・初めてのPerl」と見比べてみると、
オブジェクト指向の話とか、テストの話が充実するみたい。
楽しみ。

改定前と比べて60ページ以上追加。1.25倍の厚さで再登場。
# 値段も1.2倍強に

出たら買います。


投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2006-09-16 Sat

まるごとPerl! Vol.1

かなり前に購入していた、まるごとPerl! Vol.1に目を通した。

個人的には、弾さんのEncodeの話、池邉さん&ma.laさんの
livedoor Readerの話、naoyaさんのはてなブックマークの話が
大変興味深かったです。ありがとうございました。

他にもPerl使いたての頃から役立つ知識が満載ですね。

最初のモジュールとCPANの話は、まさにPerlを使い始めたころ
いろいろなWebページを調べて知った内容ですし、
Spamassasssinの記事のエンコード検出の話は、
いつになっても悩ましい話です。

実習編やフレームワークの記事は、
知らないことがたびたび出てきて、へぇへぇと読んでいました。

Perlで日々実装している人や、これからPerlに触る人は、
しばらくオライリー本と一緒に並べておくのが良いのでは。

まるごとPerl! Vol.1
powered by amagami on 2006.9.18
小飼 弾, 宮川 達彦, 伊藤 直也, 川合 孝典, 水野 貴明
インプレスコミュニケーションズ(2006/08/24)

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2006-09-13 Wed

CPAN::MiniでローカルにCPANのミラーを作る

CPAN::Miniを使うと気軽にローカルにCPANのミラーを作れることを知った。

CPAN::Mini で CPAN のミラーをローカルに:blog.bulknews.net

飛行機やら電車の中やらでオフラインハックするときに(たまに)問題に
なるのが CPAN モジュールの不足です。「あぁ、このマシンにはあのモ
ジュール入ってねぇ〜」とかでハックが滞るのは萎えます。というわけで
minicpan。CPAN::Mini というモジュールで、CPAN モジュールの最新版だ
けを持ってきてミラーをつくることができます。


早速実行することにした。以下作業メモ。

とりあえず、cpanシェルでCPAN::Miniをインストールする。

% perl -MCPAN -e shell
cpan> install CPAN::Mini


CPAN::Miniをインストールしたら、コマンドラインでminicpanを実行する。



初回のダウンロードには、なんと半日くらいかかった。

今後は初回ほど時間がかからないようなので、
毎日0時にモジュールをクロールすることにした。

% vi ~/.crontab


.crontabに以下を追記する。毎日0時0分にコマンドを実行する。

0 0 * * * minicpan -r http://ftp.funet.fi/pub/languages/perl/CPAN/ -l ~/minicpan


.crontabをcrontabに反映する。

% crontab ~/.crontab


ダウンロードしたCPANのミラーは、
CPANシェルで以下のように入力すると使用できる。

cpan> o conf urllist unshift file:///home/MYHOME/minicpan


今のところ、最新版モジュールを全部ダウンロードすると、
minicpan以下の容量は500MByteくらいになるらしい。

これから沢山活用すると思います。ありがとうございました。

[2006-09-18]追記:
minicpan以下の容量は今日の時点で610MByte位でした。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2006-09-07 Thu

Perlのハッシュスライスと配列スライスについてのメモ

夕方、研究室でPerlのハッシュスライスが話題にのぼった。
こういうネタで盛り上がるのは、さすが理系の研究室。

以下、おもにホワイトボードから転写。



Perlのハッシュスライスと配列スライスについて!!

以下は全て、式の左辺で使うと配列が返って来る。
@array@arrayという配列全体
@array[0, 1, 2]@arrayの添え字が0〜2番の要素の組
@array[0..2]@array[0, 1, 2]と同じ
@hash{ 'a','b','c' }ハッシュ%hashの、キーがa,b,cの組
@hash{@key}配列@keyをキーとするハッシュ%hashの要素の組

で、ここまでは基礎知識。

これらを応用すると

@hash{a,b} = (あ,い);

こんなことは当然できる。

ということは、

@key=(a,b,c)」と「@val=(あ,い,う)」を用意して、

@hash{@key} = @val;

とすると、お手軽に@keyをキー、@valを要素とするハッシュ%hashが作れる!!

便利!!



他に、@arrayのユニークな要素だけをとるにはどうしたら良いか、
という話題も出てきた。

Rubyだと「array.uniq」みたいにできるけど、
Perl5だと「do{ my %h; grep{ !$h{$_}++ } @array }」とか必要で面倒。

でも、Perl6は「@array.uniq」できるよ。とか。

こういうPerlの話が沢山出てきてくれると楽しい。

List::UtilとかScalar::Utilも便利ですよ。と。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2006-07-06 Thu

さくらサーバーにCPAN shellでモジュールインストール

さくらのレンタルサーバーを使っているけれど、
最近リリースされたCPANモジュールが入っていなくて困った。

とはいえ、ソースをダウンロードしたり、
いちいちコピーしたりコンパイルしたりするのが面倒なので、
できるところまでCPAN shellを使ってインストールしたいと思った。

以下の方法だと私が使いたいモジュールは使えるようになりましたが、
Bundle::CPANをインストールしたときに、CPAN shellが立ち上がらなくなっ
て、悲しい思いをしました。必要に迫られたら、また考えます。

以下は$HOME/lib/perlにインストールした例。

ディレクトリを作る
% cd lib
% mkdir perl
% cd perl

% perl -MCPAN -e shell
CPAN shellを設定する。

一旦exitする
cpan> exit

% perl -MCPN -e shel
cpan> o conf makepl_arg "LIB=~/lib/perl PREFIX=~/lib/perl INSTALLMAN1DIR=~/lib/perl/man/man1 INSTALLMAN3DIR=~/lib/perl/man/man3"

makepl_arg LIB=~/lib/perl PREFIX=~/lib/perl INSTALLMAN1DIR=~/lib/perl/man/man1 INSTALLMAN3DIR=~/lib/perl/man/man3
と表示される。

cpan> o conf commit

commit: wrote $HOME/.cpan/CPAN/MyConfig.pm
と表示される。

shell(cshとかbashとかzsh)の ~/.hogercファイルに、「PERL5LIB $HOME/lib/perl」を追記する

その後は、普通にperl -MCPN -e shellして、モジュールをインストールする。


今後あんまり必要なモジュールが増えると困るな。
何とかしなければ。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2006-06-24 Sat

Net::Googleインストール時のエラー

Net::GoogleをCPAN shellでインストールしようとしてつまづいた。

どうやら足りないファイルがあるので探すと、
同じパッケージの違うディレクトリにはあった。

そこで、ディレクトリをコピーすることにした。

	
% cp -r /ユーザのホーム/.cpan/build/Net-Google-1.0/lib/Net/Google/Services /ユーザのホーム/.cpan/build/Net-Google-1.0/blib/lib/Net/Google/


あとは普通に、install Net::Googleすればインストールできた。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2006-05-26 Fri

chalow用のはてな記法プラグイン">chalow用のはてな記法プラグイン

このエントリーをはてなブックマークに追加 chalow用のはてな記法プラグイン">chalow用のはてな記法プラグイン "), 'delicious','toolbar=no,width=550,height=550'); return false;">Delicious [chalow][Perl]

ChangeLogを書くときのスタイルと、最近好みな表示スタイルが
大きく離れたので、chalowの改行処理に手を入れた。
すると、リストっぽい表示が上手いこといかなくなった。

では、どうするか。今回は「Text::Hatenaを使ってみたい」
と以前から思っていたので、Text::Hatenaを使った
chalow用のプラグインを探してみた。
でも、ちょっと検索したところ見つからない。
Text::Hatenaを使う必要性に迫られるchalowユーザが
いないということですかね。

# usage: {{t_h(はてな記法で記述)}}
use Text::Hatena;
sub t_h{ #はてな記法に変換
    my ($text) = @_;
    my $parser = Text::Hatena->new;
    $parser->parse($text);
    my $parsed_text = $parser->html;
    return $parsed_text;
}


これだけ。箇条書き以外には積極的に使う予定がないので、
これで十分。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2005-12-24 Sat

自分しか使わないモジュールはむなしい

CPANにモジュールを上げる人たちの気持ちがやっと分かってきた。
自分しか使わないモジュールってむなしい。
それにしても、HTML::TreeBuilderで再起的に木を作りたいとき、他の人
はどうしてるんでしょう。
文字化けと戦わずに勝っているんでしょうか。
なんか、いい方法見つかんないかな。
とりあえず、モジュールに前処理と後処理の関数を書いて、TreeBuilder
の前とjoinの後で飛ばすことにした。
いまのところエラーなし。うまくいってる。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2005-12-23 Fri

Perlの環境構築に、まさか7時間もかかるとは

3台のPCのPerlモジュールを何とかしようと思ったら、ながら作業でした
けど7時間かかりましたね。びっくり。
まっさらなマシンて怖い。
あと、そろそろ遅ればせでCatalystやろうと思ったのが間違えの原因かも。

Catarystを始めようとしたときの問題は
$ sudo perl -MCPAN -e 'install Bundle::Catalyst'
$ sudo perl -MCPAN -e 'install Bundle::Catalyst::Everything'
しようと思っても、Bundle::CatalystとBundle::Catalyst::Everythingが
見つからないこと。
ということで、自分で考えていれろ!!というお告げですか、とガッカリ
して、ネット上にあるキャッシュから、どんなモジュールを使っているの
かをみて、順に入れていきました。

で、インストールしたのはdebianで、今メインで使っているDBは
MySQL-4.1。

●最初にapt-getでいろいろ入れる。
apt-get install expat libexpat1-dev libxslt1 libxslt1-dev
apt-get install libmysqlclient14-dev
apt-get install libcompress-zlib-perl libio-zlib-perl zlib-bin
zlibc
apt-get install libgd-gd2-perl libgd2-xpm-dev libgd-tools

●次に使いそうなモジュールをザクザクいれる。足らないものもあるでしょ
うね。あと、errorはよく読んで大丈夫そうならforce installしちゃいま
した。
Jcode
CGI
Cache::FileCache
Pod::Simple
Test::Pod
Test::Pod::Coverage
Ima::DBI
DBD::SQLite
DBD::mysql
Class::DBI
Class::DBI::mysql
Class::DBI::Plugin
Class::DBI::Plugin::CountSearch
Class::DBI::Plugin::Iterator
Test::Signature
File::Find::Rule
Digest::MD5
Encode::Guess
Encode
YAML
Class::DBI::AutoLoader
Class::DBI::Loader

●次にBundle::Catalystをいれる。余分なのもありそう。
GD
GD::Text
GD::Graph
GD::Graph3d
Tie::DBI
XML::XPath
Image::Info
Image::Size
Pod::POM
XML::DOM
Text::Autoformat
Template
ExtUtils::ParseXS
Catalyst
Catalyst::Plugin::FormValidator
Catalyst::Plugin::FillInForm
Catalyst::Plugin::Prototype
Catalyst::Plugin::Singleton
Catalyst::Plugin::DefaultEnd
Catalyst::Plugin::SubRequest
Catalyst::Plugin::Session
Catalyst::Plugin::Session::State::Cookie
Catalyst::Plugin::Session::State::URI
Catalyst::Plugin::Session::Store::File
Catalyst::Model::DBIC
Catalyst::Model::DBIC::Plain
Catalyst::View::TT
WWW::Mechanize
Test::WWW::Mechanize
Test::WWW::Mechanize::Catalyst
Catalyst::Plugin::FormValidator::Simple
Test::Memory::Cycle
Test::Taint

●そんでBundle::Catalyst::Everythingあたりを入れる。足りるのかな。
Catalyst::Plugin::Authentication::CDBI
Catalyst::Plugin::Email
Catalyst::Plugin::FillInForm
Catalyst::Plugin::FormValidator
I18N::LangTags
Catalyst::Plugin::I18N
Catalyst::Plugin::Pluggable
Catalyst::Plugin::Prototype
Catalyst::Plugin::Session::FastMmap
Catalyst::Engine::Test
Catalyst::Plugin::Static
Catalyst::Model::CDBI
Catalyst::Model::CDBI::CRUD
Date::Simple
Time::Piece::Range
Plucene::Simple
Catalyst::Model::Plucene
Catalyst::View::REST::XML
Catalyst::View::REST::YAML
Catalyst::View::TT
Catalyst::View::Mason

なんか、使わないものも入ってそうだし、一番使うものが入ってなかった
りしてそうだけど、ま、あとで何とかなるでしょう。
もうグッタリ。5分で始められるという噂のRoRに心が揺れる。

[2006-01-12]:追記
なんだ、install Task::Catalystでインストールできるじゃん、と分かった。
次回からは、Task::Catalystで。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2005-12-11 Sun

うーむ。

cdbiを使って、作った複数のモジュールのうち、1個だけretrieveできな
いという、ショボい状況に1時間半悩んでいる。だめじゃん。
ちょっと疲れたので、休憩。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2005-12-05 Mon

HTMLTreeBuilder

具体例はここに書きませんが、原始的な使い方をしています。
なんていうか、もっと洗練された使い方がしたい。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2005-11-07 Mon

考え事用にWikiを使うことにした - FreeStyle Wikiの導入

調べ物をしているときに調べたことをメモする手段として、「紙に手で書く」、「ChangeLogにメモする」など、を実行していました。でも、どちらもしっくりこない時があるので、Wikiで解決できればなぁと思いWikiをインストールすることにしました。

いままでWiki自体を、そんなに真剣にいじったことがないので何をインストールするか悩むことから始めました。悩んだ結果、FreeStyle Wikiが自分に合いそうなのでFreeStyle Wikiを使ってみることにしました。

私はFreeStyle WikiをcoLinux上のdebian Linuxで動いているApacheで動かしました。Wiki初体験はドキュメントを読みながらでも多少つまったので、今後のためにメモを残します。

●FreeStyle Wikiのインストールメモ
1、FreeStyle Wikiの設置方法
 ・ FreeStyle Wikiに必要なもの
  - FreeStyle Wiki
   ・http://fswiki.poi.jp/wiki.cgi?page=FrontPage
  - ApacheでPerlを使ったCGIプログラムを動かせる環境
  - やる気

2、必要なものをダウンロード
 ・FreeStyle Wiki本体
  - 公式サイトにsourceforgeからダウンロードするように書いてある
  - https://sourceforge.jp/projects/fswiki/files/
 ・tDiaryのテーマ(見た目に凝る場合)
  - 見た目のベースにtDiaryのテーマを使える。個別 or まとめてダウンロードする。私はhatenaのテーマがお気に入り。
   ・個別にダウンロード : http://www.tdiary.org/20021001.html
   ・まとめてダウンロード : http://www.tdiary.org/20021112.html

3、インストール
 ・FreeStyle Wikiのパッケージを解凍。
  - 解凍してできたフォルダの名前を好きなように変更。
  - 名前を決めたWikiのフォルダをCGIが実行できるディレクトリにアップロード。
 ・アップロードしたディレクトリの中に4つのディレクトリを作る。作るのはbackup、attach、pdf、logディレクトリ。
 ・data、backup、attach、pdf、log、configディレクトリの権限をCGIから書き込みできるように変更する。
  - ディレクトリが無いと、ディレクトリが見つからない系のエラーメッセージが出る。
 ・data、configディレクトリの中にあるファイルの権限をCGIから書き込みできるように変更する。
  - 書き込みができないと、Internal Server Errorが出る。
 ・必要ならtDiaryのテーマをthemeディレクトリにアップロードする。
  - アップロードするテーマがhatena_savanna-whiteなら、theme/hatena_savanna-whiteとなるようにアップロードする。

4、動作テスト
 ・ブラウザでインストールしたWikiディレクトリ内のwiki.cgiにアクセスする。
  - 見えたらOK。見えない場合はディレクトリの権限かPerlを疑う。
 ・ページ上部のメニューの「ログイン」からadmin:adminでログインして、adminユーザーのパスワードを変更してみる
  - 変更できればOK。変更できないときはdata、configディレクトリにあるファイルの権限を疑う。

# ここまでできれば、インストール終了でしょう。

5、いろいろ困りそうなこと
 ・見た目を変えたい
  - ページ上部のメニューの「ログイン」→「スタイル設定」から、よろしく操作する。
 ・ユーザやページを追加・削除したりしたい
  - ページ上部のメニューの「ログイン」から、それっぽいとこをいじる。
 ・サイドメニューが欲しい
  - ページ上部のメニューの「新規」をクリックし、「Menu」というページをつくる
 ・サイドバーが思い通りに表示されない
  - 「ログイン」→「スタイル設定」の「ユーザ定義スタイル」に必要なことを記述するのも手。既存の定義と矛盾しないように。
  - でも、使っているtDiaryのテーマのcssを直接いじったほうが早い。themeディレクトリ内から設定すべきcssファイルを探して、div.mainとdiv.sidebarに関する設定をいじる。
  - div.adminmenuやh1の設定を見直すと上手くいったりする。
 ・Wiki記法が分からない
  - ページ上部のメニューの「ヘルプ」をクリックして記法の説明を読む。
 ・子Wikiを作りたい
  - ページ上部のメニューの「ログイン」→「WikiFarmの設定」→「Farmを使用するかどうか」で「使用する」を選択。
  - ページ上部のメニューの「Farm」をクリックして、子Wikiをつくる
 ・Wikiのバックアップ履歴を1世代以上とりたい
  - wiki.cgiと同じディレクトリにあるsetup.datを眺めて設定
   ・私は自分しか使わないけど何となく30にしておいた。

6、実際にWikiを使ってみて、へー、と思ったこと
 ・最初にドキュメント読まないと、何をすればいいのか分からない
  - 最初に説明書を読んだのは久々。
 ・サイドメニューは自分で作り上げる
  - ブログに慣れると、気持ちがたるむ。昔は全部人力だった。
 ・新規でページを作ると、ページ名がhatenaキーワードみたいにリンクされた
  - これがhatenaキーワードの元かぁ、と
 ・子Wikiが便利
  - 必要なカテゴリを考えたら、そのカテゴリに割り当てる子Wikiをつくりまくればいい。
 ・時系列で処理しきれない内容にピッタリ
  - タイムスタンプがいらない考え事はWiki上で編集して、まとまったらChangeLogへ流し込む、のが良さそう。

んー、便利便利です。インストールから調整まで1時間くらいで終わりました。

自分のWikiの見た目はこんな感じ。

今後は、時間軸を活かせない考え事についてはWiki上でコネコネすることにします。
楽しいネタを公開できるといいなぁ。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2005-07-22 Fri

位置情報付き画像のalt記述

[2005-07-18-1]で動かした、Google Mapで行き先表示ですけど
いままではdescriptionを吐き出していなかったので
これはいけないな、と吐き出すことにしました。

1、位置情報画像のaltになるような記述をするときは
 「分かりやすい地名 : 地名に対するコメント」と表記する。
2、chalowで位置情報を抽出する時に、正規表現で地名とコメントを分割
 地名をtitle、コメントをdescriptionに割り当てる
3、Templateのdescription部分に流し込み


位置情報画像って、結局地名をaltに書く必要があるので
そういうところを何とかしてくれる技術って、あると便利ですね。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2005-07-18 Mon

Google Map APIで行き先表示

[2005-07-17]の夜中にGoogle Map APIに対する興味をもってしまいました。
完全にハマってしまい、[2005-07-17]は丸一日地図で遊んでいました。

ようやく何かできそうな段階にきましたけれど、ちょっと遊びすぎました。
これから何かをつくると、帰ってこれなくなる気がします。

とりあえず、成果を無駄にしないように
hackerな方々の成果で位置情報を表示してみました。

写真の位置情報はカシミール3Dを使って付与しました。

●Google Map APIで行き先表示
 Google Map APIで行き先表示できるようにしました。

 Google Map APIで行き先表示

 Scriptは、なんでもRSS!!作者の南野朋之さんのものを流用しています。

 以下はスクリーンショットです。

Google Map APIで行き先表示のスクリーンショットです。

●位置情報を含むRSSを出力
 chalowでChangeLogをコンパイルする際に、
 チェック先に位置情報を含む画像があれば
 位置情報を含むRSSファイルを生成するようにしました。
 ついでに必要なファイルはTemplateを変えて生成しました。

 ・位置情報の抽出手順メモ

1、chalowのRSS生成関数を丸々複製してリネーム
sub write_geo_file {


2、位置情報生成数を1年くらいにする。
my $ctr = ($opt_geon > 365) ? 365 : $opt_geon;


3、while文で、$coen中に含まれる<img>タグのうち
 ChangeLogからget_link_str 関数で作成した<img>タグを抽出する。
 get_link_str 関数を使ったものを区別するためにget_link_strを変更。
 classオプションを記述して、while判定の正規表現で見る。
return qq(<a href="$b"><img src="$a" alt="画像" class="$clog_url_pref">


4、Image::EXIFモジュールを使って、画像情報を抜き出す。
 get_image_info()の結果や$image_info->{'Longitude'}がundefなら
 次の画像を見る。


5、WSG84とWSG-84とTOKYOを判定する。get_image_info()の結果を利用。

6、ddmmssssやddmmmmmmなLongitudeとLatitudeをdddddddに変換する。

7、過去にリスト化した画像と同じ画像かどうかを撮影時間リストで判定。

8、その他もろもろの必要な情報をリストにぶち込む。

9、リストにぶち込んだ画像の撮影時間を別のリストに保存。

10、HTML::Templateに流し込む。


出力したRSSファイルはgeo.rdfという名前にしました。
フォーマットは、はてなMAPを参考にしています。

出力した位置情報ファイルの用途は、いろいろ考えられます。
宮川達彦さんのMap geocoded RSS/Atom to Google Mapsで見みてみます。

Map geocoded RSS/Atom to Google MapsでRSSファイルを見る

こんな感じです。とても便利ですね。

Map geocoded RSS/Atom to Google Mapsは便利です

小学生や中学生のころに社会科の授業でつかう世界地図を
四六時中眺めていたことを思い出しました。

今後は、写真に位置情報を付与する機会が増えると思います。
『位置情報ファイルが無ければ、場所を紹介する意味が無い』時代が
すぐそこまで来ているのかなと思いました。

【関連リンク】
なんでもRSS 0.1b
Map geocoded RSS/Atom to Google Maps
はてなマップ
カシミール3D / 風景CGと地図とGPSのページ

関連エントリ

[2005-07-22-2] 位置情報付き画像のalt記述
[-] 1
投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2005-07-08 Fri

Perlの命名規則

amagamiの実装をしていて、ふと考えた疑問は
「Perlに命名規則は無いのかな?」
というものでした。

そこで、研究室内の方にそれとなく質問してみると、一様に
「好きにやれば良い」
との回答をくださったので、好きに名前をつければ良いか・・・と
PerlにJavaの命名規則を適応していました。
# 私は以前Javaばかり使っていました。

ところが、PerlにJavaの命名規則を適応してもシックリこないのです。
実装上は別に問題は無いのですが、何だか落ち着きません。

そこで、Perlに有名な命名規則が無いのかを調べました。

調べること数分・・・あっさり見つかりました。
これはPerlの公式ドキュメントですね。

Perl style guide

You may find it helpful to use letter case to indicate the scope or nature of a variable. For example:
$ALL_CAPS_HERE constants only (beware clashes with perl vars!)
$Some_Caps_Here package-wide global/static
$no_caps_here function scope my() or local() variables
Function and method names seem to work best as all lowercase. E.g., $obj->as_string().


『上記ドキュメントでオススメ』しているPerlの命名規則をメモ化します。

 1 パッケージ名
  ・英単語をつなげて名づける
  ・英単語の先頭は大文字にする
  Ex、DateTime・XMLLib

 2 パッケージ以外の名前
  ・名前の意味が分かるように英単語を『_』でつなぐ

  2、1 定数
   ・英単語をすべて大文字にする
   Ex、$ALL_CAPS_HERE

  2、2 Package間で用いるGlobal・Staticなもの
   ・英単語の先頭は大文字にする
   Ex、$Some_Caps_Here・$XML_Document_Here

  2、3 my()やlocal()で宣言された関数スコープなもの
   ・Package外や関数外で使用されないもの、のこと
   ・英単語をすべて小文字にする
   Ex、$no_caps_here

  2、3 関数名、メソッド名
   ・すべて小文字にするのが最善
   Ex、$obj->as_string()

Javaとは全然違いますね。やっと命名の謎が解けました。

このメモを踏まえて、Junya Kondo Home Pageを見てみると
今のところ上記のような理解で問題はなさそうです。
# 問題が見つかったら訂正・追記します。

後で探したら、Perl style guideの和訳がありました。
 関数リファレンス -Perl講座[SMART!]

この命名規則にしたがって、明日から、いろいろ書き直しです。

ちなみに、その他のプログラミング作法については
今のところ、迷ったら「プログラミング作法」をめくるようにしています。

プログラミング作法
プログラミング作法


【引用元】
perlstyle - Perl style guide

【関連リンク】
関数リファレンス -Perl講座[SMART!]

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2005-07-08 Fri

amagamiのつくりなおし

続・初めてのPerlを読み始めて、しばらく経ちました。

今日はTAだったのですが、講義ではなく実装のみの日だったので
久々にamagamiのコードを眺めながら質問が来るのを待ちました。

以前と比べて、読書の効果があったのかコードの改善点が見えます。
また、GUIを実装したいと考えていますけれど
そのために、コードを整頓してTemplateを導入するべきだと感じました。

ついでに、MySQLとかmod_perlとかも、やってみたい。

なので、一度ソースを書き直します。開発が一段と遅れますね・・。

書き直しの過程で調べたことや、行き詰ったらことを記事にするので、
私と同じようにPerl初心者の方のお役に立てるとツイてます。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |