トップページphp
981コメント337KB

くだすれPerl(超初心者用)3

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/03/31(火) 22:20:27ID:???
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Perl使いが優しくコメントを返しますが、
お礼はPerlの布教と初心者の救済をお願いします。

前スレ
くだすれPerl(超初心者用)2
http://pc11.2ch.net/test/read.cgi/php/1204488452/

関連スレ
Perlについての質問箱 39箱目
http://pc12.2ch.net/test/read.cgi/tech/1234181856/
Perlコーディング初心者質問スレ Part 59
http://pc11.2ch.net/test/read.cgi/php/1234752149/
【Perl上級者コーナーPart01】
http://pc11.2ch.net/test/read.cgi/php/1024741312/
0002nobodyさん2009/03/31(火) 22:23:20ID:???
PERL(笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑)

時代はPHPですよ
化石ども必死だな
0003nobodyさん2009/04/02(木) 16:40:02ID:8XnYHneD
>>1



と言っておこう
0004nobodyさん2009/04/02(木) 16:46:23ID:???
ブログではなく、自身のホームページにコメント欄を設置したいのですが、 
コメントを送信したら自動的にhtmlに上書きされてページがリロードされるような 
プログラムはどのように書けば良いですか? 

考え方を教えていただければ自分で勉強しながら作ってみようと思いますので 
どうかよろしくお願いします。 
0005nobodyさん2009/04/02(木) 18:30:57ID:???
表示したいHTMLがindex.htmlだとして、例えばindex_source.htmlを別に用意して
中に「#####REPLACE_HERE#####」みたくユニークな文字列を生めておく。
そこをコメントで置換してindex.htmlに上書きする。
0006nobodyさん2009/04/02(木) 22:09:04ID:???
大昔のCGIのようなperlしか知らなかったので
最近オブジェクト指向を勉強しているのですが、なかなか理解できません。

たとえばタブ区切りテキストの外部ファイルを読み込んで
それぞれのデータを車というオブジェクトにして処理をしたい場合、

use Car;

sub new {
my $class = shift;
....
}

とコンストラクタを作って、テキストから読み込んだデータを引数とした
オブジェクトを作っていくことになると思うのですが、
すべてのデータに対してオブジェクトを作成するには

my @cars;
while (@lines) {
my ($name, $price, ....) = split /¥t/;
my $obj = new Car $name, $price, ...;
push @cars, $obj;
}

といった処理を行うことになるのでしょうか。
解説サイトなどを読むと、なんだか違うような気もするのですが
こういう具体的な使い方に関する記載のあるサイトが見つかりません。

この理解で正しいかどうか、正しくないならどういった用法が正しいのか
ご教示いただければ有り難いです。よろしくお願いします。
0007nobodyさん2009/04/02(木) 23:03:49ID:qrjZG7kJ
例が所々気になるのは横に置くとして…。

そりゃ「オブジェクト指向側(モジュールね)」のコーディング次第だろ。
呼び出し側は、オブジェクト指向側の説明を読んでその指示通りに
コーディングするしかない。
あなたが使いたいモジュールがあるならその説明を読めば良いし、
オブジェクト指向側のコーディングをしたいなら、どうするか明確に決めて
作成すれば良い。

具体的には、その例で、package Car (だよね)がセル単位で処理する
(=行毎)なら、呼び出し元でも、行単位でオブジェクトを作成して、
行単位で処理せざるを得ない。
0008nobodyさん2009/04/02(木) 23:05:00ID:???
ああ、上げちまったorz...
0009nobodyさん2009/04/03(金) 02:33:22ID:???
俺もオブジェクト指向は初心者ですが…


まずコンストラクタにはハッシュにして渡すのが一般的だと思う
ブレスするときどーせハッシュにするんだから、渡すときもハッシュのがメモリ的にも都合がいいんじゃないかな
001062009/04/03(金) 03:50:19ID:???
>>7
何をやりたいのか書いてませんでしたね、ごめんなさい。

やりたいのは車のデータを各パラメータごとに比較したり
条件に合うものを抽出したりしつつ、
データに変更を加えて保存し直したりといった作業なんです。
なので、読み込んだデータを元に
その分だけのオブジェクトを生成する必要があるのかなと考えました。
既存モジュールの使用は今のところ考えていません。

>>9
確かに、ハッシュにして受け渡すのが一般的ですね。失念していました。
サンプルのコードもぐだぐだです…申し訳ないorz
0011nobodyさん2009/04/03(金) 11:27:31ID:???
>>5
遅くなりましたが、どうもありがとうございます。
試してみます
0012nobodyさん2009/04/04(土) 05:04:43ID:???
>>10
sqlとの連携は考えてないと

じゃあインスタンス変数には車一台一台よりも車のデータ全部と条件を入れるようにした方がいいかも

{
 cars => [{一台目のデータ色々}, {二台のデータ色々},…],
 condition => {limit => 120, offset => 60…},
}
こんな感じのハッシュ作ってbless
空のハッシュをblessしてから色々付け足してもいい
条件は変更可能なようにセッターを作っておく
読み出し先が決まってるならnew内でハッシュの形に変換してやるだけでいいから引数には条件以外渡す必要はない
こうしてやると比較メソッドも抽出メソッドも車オブジェクトを2つ作って〜ってやるより簡単に実装できると思う
ここではカタログを作る方が絶対に正しい


知らんけどな
0013nobodyさん2009/04/04(土) 12:46:52ID:WDYa0L/p
全くの初心者です。
とりあえず本に書いてあるとおりに打ち込んでるんですが、

require 'cgi-lib.pl';

と言う文に関してですが、「cgi-lib.pl」というファイルは普通パールをインストールしたときに入っているものなのでしょうか?
どこを探しても見つからないのですが。
パールは5.8.8を使ってます。
0014nobodyさん2009/04/04(土) 13:07:00ID:???
cgi-lib.plでぐぐれば鬼のようにヒットする
■ このスレッドは過去ログ倉庫に格納されています