オブジェクト指向perl
モジュールを作ろうとしているのですが、何か分かりやすい参考書 やサイトないですか?なかなか見つかりません。 「オブジェクト指向Perlマスターコース」は良い本だ。 OOPじゃないPerlの解説も親切でわかりやすい。 俺はラクダ本を読んだことがないのでこれを読んでようやくlocalとmyの違いがわかった。 一般書籍レベルの解説書にはそれぞれの変数の振る舞いについては欠かれていたが、 本質的な定義について理解できたのは偏にこの本のお陰だ。 ちょっとでもOOPに興味があったら買うべし。 >>80 それはPerl4の頃の仕様じゃないか? 昔は名前空間の定義が曖昧だったためにパッケージ変数にアクセスするときに 「$パッケージ名'型グロブ」としていたときのものと思われる。 互換性を保つためにPerl5でもそれが読めるようだが、本質的にPerlオブジェクトは $スカラにオブジェクトへのリファレンスを格納して->でデリファレンスするので オブジェクトメソッドにアクセスするには->を使う。 ちなみに::はPerl5以降での名前空間の参照に用いる。 これでわかるか?てか合ってるかな? >>85 ありがとうございます。 違いが良く判りましたです。 微妙に間違い。 ×「$パッケージ名'型グロブ」 ○「*パッケージ名'型グロブ」 たまに配布版掲示板CGIなんかでjcode.plをこの方法で使っているのを見かける。 わかったなら良かったよ・・・。 ちょっと言い方がおかしいかもしれませんが… $class = new Class;として、 $class->func(...); と Class::func($class, ...); はほぼ同じときいたので、 ちょっと汚く見えますけどClass::func($class, ...);と書いても問題はないのでしょうか。 Class::func()のほうはただサブルーチンを呼び出しているだけなので $class->func()より速いという結果になりました(当たり前ですけど…)。 $classが何のオブジェクトか分からない場合は->演算子を使うのですが、 $classが必ず"Class"のオブジェクトでしかありえない場合では普通に呼び出したいと思うことがあります。 >>88 そうでなく、静的かインスタンスかで理解したほうが。 コンストラクタでblessした$selfなんかの値は使えないよ。 >>90 遅れてすみません。 Class::func("Class",...);はいいけどClass::func($class,...);は駄目ということですよね。 (あまり理解できていないような気がします、ちょっと不安…) ありがとうございました。 @ISA を直接いじらず use base するメリットってなんでしょうか。 Perl5でOOPするのに良いモジュール無いかと思って検索してみたら Class::HPLOOという便利な奴があるみたいですが、 皆さんは何を使ってますか? ちなみにここを参考にしました。 http://naoya.dyndns.org/ ~naoya/mt/archives/000870.html パッケージをつかわずにOOPてか クロージャとハッシュと無名関数だけでOOPを実装。 インスタンス、カプセル化、継承、多態性が実装されてるからOOPだよね。 sub String_new{ my $value = shift; my $self; $self = { set => sub{$value=$_[0]}, value => sub{$value}, }; } sub String2_new{ my $base = String_new(@_); my $self; $self = { %$base, set => sub{my$str=$self->{value}();$base->{set}($_[0]);$str}, length => sub{length $self->{value}()}, } } $s1 = String_new('abcde'); $s2 = String2_new('1234567'); print $s1->{value}(),"\n"; print $s1->{set}('wxyz'),"\n"; print $s1->{value}(),"\n"; print $s2->{value}(),"\n"; print $s2->{set}('890'),"\n"; print $s2->{value}(),"\n"; print $s2->{length}(),"\n"; perlで一番つかわれてるフレームワークってなに? ∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山碕渉 getメソッドで受け取った値を、Parser.pmモジュールの_parse_query関数で受け 取って解析したあと、解析した値を他のモジュールから呼び出すにはどういう記述 をすれば良いですか? ちなみに、Parser.pmはこんな感じです↓ package Common::Parser; sub new { my $class = shift; my $self = { query => undef }; bless $self, $class; if ($ENV{'CONTENT_LENGTH'} or $ENV{'QUERY_STRING'}) { $self->{query} = $self->_parse_query; } } sub _parse_query { my $self = shift; my ($data, $query); if ($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN, $data, $ENV{'CONTENT_LENGTH'}); } else { $data = $ENV{'QUERY_STRING'}; } foreach (split(/&/, $data)) { my ($name, $value) = split(/=/); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('C', hex($1))/eg; $query->{$name} = $value; } } 1; お二人様の言う事が暗号みたいでいまいち理解できませんが、なんとか 頑張ってみたいと思います。 解答ありがとうございました! なんどもすみません;; >>101 のように、コンストラクタの中に if ($ENV{'CONTENT_LENGTH'} or $ENV{'QUERY_STRING'}) { $self->{query} = $self->_parse_query; } のように、本来のコンストラクタの仕事である関連付け以外の処理をさせても良いのですか? 良いも悪いもねーよ PerlでのOOの勉強目的でやってんならCPANモジュールの中身見て どんなことをやってるか参考にしたらいいよ 実際のところ、Perlでのオブジェクト指向を学ぶには 書籍以外に何を見たらいいの? 自分はCGIのためにPerl始めたんだが そこらで配布されてるCGIにオブジェクト指向が取り入れられてる例を見たことがない。 適材適所とは思うけど、小規模なスクリプトだからってオブジェクト指向イラネってことも ないと思うんだけど・・・ 身近で、興味が持てる例があれば理解の助けになると思うのに それともフリー配布のCGIに教材的な面を望むのが無謀なのか。 >111 まず最初に、その検索能力の無さをなんとかしろよ >113,111 しょーがねーな なんか反応が素直だからいくつかURL貼ってやるよ ttp://serennz.cool.ne.jp/sblog/ ttp://apps.cside.com/ あとはここで好きなだけ探せ ttp://search.cpan.org/ >>115 sb のサクーシャ? なんか、汚い書き方多くて見る気がしないぽ。 >117 俺は >そこらで配布されてるCGIにオブジェクト指向が取り入れられてる例 を紹介しただけ。 綺麗な書き方のはお前さんにまかせた。 >>115 ># 2.00a [2004/11/17] generated ... oh, it's my birthday. 痛いコメントハケーン >121 作者の誕生日にはわざわざお知らせを出すようになってる もっと痛いスクリプトも世の中にはあるぞ。 オブジェクト指向は取り入れられてないからこのスレには書かないが。 > 作者の誕生日にはわざわざお知らせを出すようになってる > もっと痛いスクリプトも世の中にはあるぞ。 > オブジェクト指向は取り入れられてないからこのスレには書かないが。 存在を知らせる必要すらなくね? 最近Perlのオブジェクト指向勉強しだした サブルーチンにリファレンスでぐちゃぐちゃだったコードがすっきりした 単純にうれしい ∧_∧ ( ・∀・) | | ガガッ と ) | | Y /ノ .人 / ) .人 < >_∧∩ _/し' < >_∧∩`Д´)/ (_フ彡 V`Д´)/ / ←>>63 / ←>>59 誰でも簡単にネットで稼げる方法など 参考までに、 ⇒ 『半藤のブブイウイウレレ』 というサイトで見ることができます。 グーグル検索⇒『半藤のブブイウイウレレ』 2X8MM8J6F5 北京五輪が終わって ウクライナの状況の緊迫化が一段と増してきた read.cgi ver 07.5.0 2024/04/24 Walang Kapalit ★ | Donguri System Team 5ちゃんねる