1 名前:nobodyさん mailto:sage [2008/08/06(水) 22:54:32 ID:???] Perlのコーディングで困ってる人のスレです。 【投稿する際の注意】 質問するときは内容をよく吟味してから投稿してください。 「コマンドの意味がわかんない」とかはマニュアル見ましょう。 回答者さんは何でも屋じゃありません。 1: 自分はこういう事がしたい。 2: それでこんな風にやってみたが・・・ 3: こんなエラーが出て上手く行かなかった。 最低でも1と3が無いと誰も答えられないよ。 良い回答は良い質問から。一緒に勉強しましょう。 お勧めサイトは >2 以降 前スレ pc11.2ch.net/test/read.cgi/php/1203935151/ 過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
13 名前:nobodyさん mailto:sage [2008/08/07(木) 12:36:34 ID:???] >>12 復号等は諦めますので、暗号化だけはしたいんです 初心者以前なのは承知の上で今回だけお願いします
14 名前:nobodyさん mailto:sage [2008/08/07(木) 12:49:13 ID:???] >>13 それに合ったスレがあるでしょう。
15 名前:nobodyさん mailto:sage [2008/08/07(木) 13:00:58 ID:???] >>14 すみません、誘導お願いします
16 名前:nobodyさん mailto:sage [2008/08/07(木) 13:03:10 ID:???] お断りします。
17 名前:nobodyさん mailto:sage [2008/08/07(木) 13:17:02 ID:???] >>15 今度だけだよ。次からは自分で探してね。 # アドバイスが欲しい場合: ★三 【 スクリプト改造工房 PART 9 】 ★三 pc11.2ch.net/test/read.cgi/php/1143834740/ # 誰かにやってもらいたい場合: 【 スクリプト改造依頼スレ 】(丸投げ) part7 pc11.2ch.net/test/read.cgi/php/1216419170/
18 名前:nobodyさん mailto:sage [2008/08/07(木) 13:37:45 ID:???] >>17 本当にすみません、ご迷惑おかけしました
19 名前:nobodyさん mailto:sage [2008/08/07(木) 14:03:46 ID:???] >>5 $resp->is_successと$resp->status_lineを確認してみれ。
20 名前:nobodyさん mailto:sage [2008/08/07(木) 16:26:22 ID:???] Template Toolkitで、HTMLを書くときに、セレクトメニューやラジオボタンの 初期値を設定するにはどうすればいいのでしょうか。 CGI.pmでセレクトメニューを作ったときのようにdefault値を指定できる仕組みがあると便利なのですが。 現状では一つ一つにifで <select name="test"> <option value="test_1" [% IF test_1 %]selected="selected"[% END %]>test1<option> <option value="test_2" [% IF test_2 %]selected="selected"[% END %]>test2<option> <option value="test_3" [% IF test_3 %]selected="selected"[% END %]>test3<option> </select> こんな感じでやってるのですが、他に効率のいい方法があったら教えてください。
21 名前:nobodyさん mailto:sage [2008/08/07(木) 16:55:07 ID:???] >>5 っ[LWP::Debug*]
22 名前:nobodyさん mailto:sage [2008/08/07(木) 16:57:22 ID:???] >>20 HTML::FillInFormを通すとかダメ
23 名前:nobodyさん mailto:sage [2008/08/07(木) 18:43:16 ID:???] >>20 selectする要素がDBに入ってるから、 ループでまわして、同じ値だったらselectedするようにしてる。
24 名前:nobodyさん mailto:sage [2008/08/07(木) 21:07:08 ID:???] [% USE FillInForm %] [% FILTER fillinform fdat => stash %] <select name="test"> <option value="test_1">test1<option> <option value="test_2">test2<option> <option value="test_3">test3<option> </select> [% END %]
25 名前:5 [2008/08/07(木) 21:41:11 ID:1CE8PFPT] 不思議〜! print "content=" . $resp->content . "\n"; #これだとHTML全部表示される #print $resp->content; #これだと途中で止まる ちなみに、 >>19 is_success=1 status_lilne=200 OK でした。(^^ >>21 出力結果がよくわからず。。まだまだ勉強が足りないようです。。
26 名前:nobodyさん mailto:sage [2008/08/07(木) 22:25:18 ID:???] バッファリングかよ。どういう出力先のどういう問題だ?
27 名前:nobodyさん mailto:sage [2008/08/08(金) 02:06:15 ID:???] my $c = 9250; #JISコードの"あ" print Jcode->new(chr $c,"jis")->utf8,"\n"; print Jcode->new("あ","jis")->utf8, "\n"; 異なる結果が表示されるのですが、同じ結果はどうすれば得られますか。
28 名前:nobodyさん mailto:sage [2008/08/08(金) 02:32:39 ID:???] JISの 'あ' は10進9250じゃなさそうな気がする
29 名前:nobodyさん mailto:sage [2008/08/08(金) 02:35:43 ID:???] ごめんなさい。>>28 撤回。
30 名前:nobodyさん mailto:sage [2008/08/08(金) 02:36:27 ID:???] chr が返すのは Ascii だから、そこの時点で終わってる
31 名前:20 mailto:sage [2008/08/08(金) 11:08:08 ID:???] >>22 こんなものがあったのですね。とても便利そうなので使ってみます。 >>23 ふむふむ >>24 具体的な使い方ありがとうございます! みなさんどうもありがとうございました。
32 名前:nobodyさん mailto:sage [2008/08/08(金) 16:57:50 ID:???] >>27 use Jcode; my $c = 9250; #JISコードの"あ" print Jcode->new(pack('A3n', "\e\$B", $c), "jis")->utf8, "\n"; print Jcode->new('あ',"jis")->utf8, "\n"; # ぶっちゃけJISではencoding使わないとスクリプトなんて書いてられないんだが、 # 言及してないところを見ると、後釣りなんだろうか。
33 名前:nobodyさん mailto:sage [2008/08/08(金) 17:45:59 ID:???] 'あiう' が5バイト程で済みそうな感覚のまま気軽に試しただけじゃないかな。 本気でエスケープシーケンスにまみれてたら元質問が出てこない。
34 名前:nobodyさん mailto:sage [2008/08/08(金) 18:32:27 ID:???] >>32 ありがとう。助かりました。
35 名前:5 [2008/08/08(金) 23:12:59 ID:6d/Auy3a] >>26 Windows Vista 、Active Perl v5.6.1、コマンドプロンプト でHTMLをGETしてprint出力させたところ、下記結果になりますた。。 print $hoge ; #一定サイズで止まる print "Content=" . $hoge ; #全部出力される
36 名前:nobodyさん mailto:sage [2008/08/10(日) 01:25:04 ID:???] >>35 うーん、再現しないなあ。ページは >>5 のソースのアレでいいんだよね? 他に再現するページはあります?
37 名前:nobodyさん mailto:sage [2008/08/10(日) 08:17:20 ID:???] >>35 Perl 5.8.8 on Linux Perl 5.8.8 on WinXP にて再現しませんでした。
38 名前:35=5 [2008/08/10(日) 12:35:43 ID:FnBuPKsd] 2chのレス900くらいのスレッドを読み込んでも、途中で止まります。 ↓こんな感じ c:\Perl>gethtml03.pl 〜省略〜 は意識してないんですが、これで(野村 c:\Perl> 下記のようにファイル出力させると正常に</html>まで書き込んでいました。 open(OUT, ">gethtml.txt"); print OUT $resp->content ; close(OUT); Perlの問題ではなくて、コマンドプロンプトが勝手にセッションを切ってしまうのかもしれません。。
39 名前:nobodyさん [2008/08/10(日) 13:54:06 ID:e4jqjZel] WinのActivePerlにて一行目に #!C/:perl/bin/perl として指定していますがこれをを #!usr/bin/perl で動かしたいのですが良い方法はありますか?
40 名前:nobodyさん mailto:sage [2008/08/10(日) 14:25:28 ID:???] >>39 試してからもう一度聞きに来てくださいな。 あ、あたち、……待ってゆかやぁ! # ちなみにそれ、どっちもたぶん間違っているけれど釣りなのか typo なのか。
41 名前:nobodyさん mailto:sage [2008/08/10(日) 15:25:56 ID:???] どっちもアレだねw まあ、何も書いてなくても動くけど。
42 名前:36 mailto:sage [2008/08/11(月) 21:00:27 ID:???] >>38 何度やっても、ぴったり再現するようなら、以下の原因が考えられます。 - Windows Vista 搭載 cmd.exe(?) の新機能 - Windows Vista の新機能 - Perl もしくは Module のバージョンが古臭い 当方は以下の環境で相変わらず再現せず: Perl 5.10.0, (nyacus.exe|cmd.exe|command.com), Windows XP Professional SP2
43 名前:nobodyさん mailto:sage [2008/08/13(水) 12:07:37 ID:???] 置換で後方参照を変数展開したいのですが どのように記述すればいいでしょうか? $str = 'XXX,YYY'; $aa = $ARGV[0]; # (.+),(.+) $bb = $ARGV[1]; # $2-$1 $str =~ s/$aa/$bb/; # YYY-XXX になるようにしたい
44 名前:nobodyさん mailto:sage [2008/08/13(水) 12:41:40 ID:???] eオプションとか使えば? ただ$1-$2は"で囲わないと、変数展開しないと思う。
45 名前:nobodyさん mailto:sage [2008/08/13(水) 23:35:35 ID:???] eオプション付けても そのまま $1-$2 に置換されます。 できないのでしょうか。
46 名前:nobodyさん mailto:sage [2008/08/13(水) 23:51:09 ID:???] >>45 一個じゃパワーが足りないんじゃね?
47 名前:nobodyさん mailto:sage [2008/08/14(木) 04:07:34 ID:???] e二つなら、"も二重にする必要がある。 忘れずに。
48 名前:nobodyさん mailto:sage [2008/08/14(木) 09:24:20 ID:???] 変数展開二重にする必要があるから、明示的にeを使用する。それも2回。 eを使わなくても変数展開するが、その場合は一度しかしない。 $2-$1だと引き算が行われるので、"で囲って変数展開が行われるようにする。
49 名前:nobodyさん mailto:sage [2008/08/14(木) 15:40:50 ID:???] ありがとうございました。 最終的にこうしました。 $str = 'XXX,YYY'; $aa = $ARGV[0]; # (.+),(.+) $bb = $ARGV[1]; # $2-$1 $bb = "\"".$bb."\"" if($bb =~ /[\$]\d/); $str =~ s/$aa/$bb/ee; # YYY-XXX になるようにしたい
50 名前:nobodyさん [2008/08/16(土) 16:45:37 ID:oiXxzTPY] .qmailからパイプにて呼び出すプログラムで MIME::Parserを使用してメールを処理したいのですが my $parser = MIME::Parser->new(); $parser->parse(\*STDIN); のparseを呼び出した時点で処理がとまってしまいました。 無限ループではまったかのようにとまっています。 falseも返ってきません。 ネットを調べても、上記の状態でとまったという事例を 発見することができませんでした。 原因として考えられることはどのようなことでしょうか?
51 名前:nobodyさん mailto:sage [2008/08/16(土) 16:54:48 ID:???] STDIN の内容を一旦読み込んで、読み込んだ変数に対してやってみて
52 名前:nobodyさん [2008/08/16(土) 17:02:50 ID:oiXxzTPY] my $buf; while(<STDIN>){ $buf .= $_; } my $entity = $parser->parse($buf); ありがとうございます。 この形でよろしいでしょうか? 上の形にしても現状の解決はできませんでした。 新しくわかったこととして、メールに画像を添付した際に とまってしまっていることがわかりました。 ファイル添付をしていないメールならば $parser->parse()を抜けてきているようです。
53 名前:nobodyさん mailto:sage [2008/08/16(土) 17:46:56 ID:???] まさか・・・Win/LinuxでのSTDIOの扱いはわかってるよね?
54 名前:nobodyさん [2008/08/16(土) 18:02:12 ID:oiXxzTPY] > まさか・・・Win/LinuxでのSTDIOの扱いはわかってるよね? 正直今ひとつわかっていないと思います。 どこか、大前提のようなものが抜けているのでしょうか?
55 名前:nobodyさん mailto:sage [2008/08/16(土) 23:56:28 ID:???] 何かの理由で eof が来ていなくてずっと待機しとるのではないかな。 qmail 使ったことないんでわからんけど。
56 名前:nobodyさん mailto:sage [2008/08/17(日) 01:13:43 ID:???] 問題を切り分けろよ。
57 名前:nobodyさん mailto:sage [2008/08/17(日) 03:07:34 ID:???] qmail のログとか、qmail のインストールで null に出してる内容を出させるとか .qmail 使わずに添付ファイルの受信は出来てるのかとか、色々問題を切り分けてみてよ あと止まる直前か直後の文字コードを、正常に受信出来たときのコードで憶測してみるとか まだまだやることはあるんじゃないの?
58 名前:nobodyさん mailto:sage [2008/08/17(日) 04:50:10 ID:???] 変数ではなくて、ファイルにキャプチャして、 そのファイルが展開できるかどうかをチェックしてみればいいんじゃないのか。 あと、エラートラップは、きっちり書いて。
59 名前:nobodyさん mailto:sage [2008/08/18(月) 10:53:12 ID:???] 読み込んでる時に止まってるんだからファイルに落とせないのでは? 質問者が特定場所以降のドロップっ意味で止まってるって書いてるならやる意義は十分ありますが…
60 名前:nobodyさん mailto:sage [2008/08/18(月) 11:46:03 ID:???] ファイルに取れないのなら、Perlの問題じゃないってこった。
61 名前:nobodyさん mailto:sage [2008/08/18(月) 12:32:24 ID:???] おまえら親切だな
62 名前:nobodyさん mailto:sage [2008/08/18(月) 14:52:08 ID:???] >>59 おまえの想像はどうだっていい
63 名前:nobodyさん mailto:sage [2008/08/19(火) 18:06:14 ID:???] 練習がてらVBのコードをPerlで書き直していますがうまく通りません。 項目を数字で指定しない方向で同等の処理は出来ないでしょうか。 お願いします。 ' VB+oo4o OraDynaset = OraDataBase.DbCreateDynaset(SQL_STR, 0&) aaa = OraDynaset.Fields("AAA").Value # Perl+oo4o my OraDynaset = OraDataBase.DbCreateDynaset(SQL_STR, 0) $aaa = $OraDynaset->Fields('AAA')->{Value}; 結果:Can't call method "Fields" on an undefined value at ***. $aaa = $OraDynaset->{Fields('AAA')}->{Value}; 結果:Undefined subroutine &main::Fields called at ****
64 名前:nobodyさん mailto:sage [2008/08/19(火) 18:26:43 ID:???] そもそもVBでもうまく通ってないじゃないかwwwwwwwwwwww
65 名前:nobodyさん mailto:sage [2008/08/19(火) 23:26:21 ID:???] >>63 自覚はないのかも知れないけれど、なんだかすごく混乱しているみたい。 VB, Oracle, oo4o, OLE, Perl のそれぞれに分けて把握を整理したほうがよさげ。
66 名前:nobodyさん mailto:sage [2008/08/20(水) 10:57:24 ID:???] oo4oのマニュアルではFieldsはプロパティと成っています。 エラーメッセージから分かるのは、Fieldsをメソッド/サブルーチンとして呼び出そうとしている。 それを踏まえてPerlの文法をもう少し勉強してみます。
67 名前:nobodyさん mailto:sage [2008/08/20(水) 23:15:22 ID:???] >>63 perlの文法は行の最後にセミコロン;が必要だよ
68 名前:nobodyさん mailto:sage [2008/08/20(水) 23:50:12 ID:???] すんません、教えてください 文字列で、"20080820"となっている 前日(昨日)を求めるコーディングを 教えてください。
69 名前:nobodyさん mailto:sage [2008/08/20(水) 23:54:12 ID:???] 20080820 - 1
70 名前:nobodyさん mailto:sage [2008/08/20(水) 23:58:55 ID:???] >>69 それだったら、 20080801 の場合はどうするのかな。
71 名前:nobodyさん mailto:sage [2008/08/21(木) 00:34:14 ID:???] Date::* なモジュールを使え。
72 名前:nobodyさん mailto:sage [2008/08/21(木) 01:40:28 ID:???] 20080800になってしまうので困ります
73 名前:nobodyさん mailto:sage [2008/08/21(木) 01:50:41 ID:???] perl -MDateTime::Format::HTTP -e 'print DateTime::Format::HTTP->parse_datetime('20080821')->subtract(days => 1)->ymd("")'
74 名前:nobodyさん mailto:sage [2008/08/21(木) 02:22:39 ID:???] use Date::Calc qw(Add_Delta_Days); とか use Date::Manip qw(UnixDate DateCalc Date_Init); とか。
75 名前:nobodyさん mailto:sage [2008/08/21(木) 02:56:24 ID:???] timelocalでepochタイムに戻して-24*60*60してlocaltimeに食わせる 日付の話がでたついでに質問なのですが、Nヶ月後とかNヶ月前ってどうやって計算してる? (というよりどう定義してるかの問題?) Q1. 1月31日の一ヶ月後 Q2. 2月28日の一ヵ月後 Q3. 3月31日の一ヶ月前 Q4. 3月31日の一ヵ月後
76 名前:nobodyさん mailto:sage [2008/08/21(木) 03:46:07 ID:???] >>75 ttp://www5d.biglobe.ne.jp/~Jusl/TomoLaw/KikanKeisan.html
77 名前:63 mailto:sage [2008/08/21(木) 08:04:49 ID:???] >>67 ";"は当たり障りある部分を消すときに一緒に消えたのでしょう。 一応、文字コードが変な様ですが、通ることは通るようになりました。 項目指定にリテラル数字/リテラル文字列を指定すると変なままですけど。 my $OraSession = Win32::OLE->new ("OracleInProcServer.XOraSession"); my $OraDatabase = $OraSession->DBOpenDatabase("orcl", "scott/tiger", 0); my $oDyna = $OraDatabase->CreateDynaset("SELECT * FROM ****", 0); my %FN; my $i; for ($i = 0; $i < $oDyna->Fields->Count ; $i++){ $FN{$i} = $oDyna->FieldName($i); } while(!($oDyna->{EOF})) { for ($i = 0; $i < $oDyna->Fields->Count ; $i++){ print $oDyna->Fields($FN{$i})->Value, "\n"; } print "\n"; $oDyna->MoveNext; }
78 名前:nobodyさん [2008/08/21(木) 09:39:20 ID:VetJG0Vx] $OraDatabase->CreateDynasetが転けていただけでした。 print $OraDynaset->Fields('ABCD')->Value."\n"; は普通に通ります。
79 名前:nobodyさん mailto:sage [2008/08/23(土) 09:30:39 ID:???] こっそりとsageて質問します。 ギャル文字の正規化モジュールとか知りませんか。ギャル文字への変換じゃなく、ギャル文字からの変換。 手作業で対応表を組もうとかも考えましたが、無謀すぎた……orz
80 名前:nobodyさん mailto:sage [2008/08/23(土) 10:04:39 ID:???] 文字コードの変換について質問です。 今様々なWEBページからHTMLを取得して、それをShiftJISに変換しているのですが、 JcodeでもEncodeでも一部のページで文字化けが起こって困っています。 文字化けを極力起こしたくない場合、どのような変換方法がいいのでしょうか?
81 名前:nobodyさん mailto:sage [2008/08/23(土) 10:17:15 ID:???] 文字化け起こしたページの原因を把握すればいいかと 元ページ自体が文字化けしてるかどうか目視することも一考
82 名前:nobodyさん mailto:sage [2008/08/24(日) 04:03:35 ID:???] >>80 decoded_contentが一番楽っぽい。 gzip/deflateにも対応してるみたいだし。 $r->is_success or die $r->status_line; my $content = $r->decoded_content(); defined $content or ...; utf8で出てくるから、あとは適当に変換で。
83 名前:80 mailto:sage [2008/08/25(月) 20:08:13 ID:???] >>81 文字化けするページは一部文字化けしている場合が多いですね。 もともとそのページに問題があるのかも知れません。 >>82 そんな方法あったんですね、初めて知りました…。 近いうちに試してみようと思います。 返信ありがとうございました。
84 名前:nobodyさん [2008/08/27(水) 11:11:12 ID:???] Web上で動作するToDoリスト(img04.shop-pro.jp/PA01011/131/product/2544732.jpg )を作りたいのですが、 自分で内容を追加していくといった物ではなくて、既存のHTMLにチェックボックスがあり、 そこにチェックを入れ、「保存する」ボタンを押したら、ログファイルにチェックされているか否かを保存し、 更新後にチェックされている状態が保存されている物を作りたいのですが、このような処理はどのようにしてやれば良いのでしょうか? 最終的には自分でToDoの内容も掲示板みたく追加出来るようにしたいです。
85 名前:nobodyさん mailto:sage [2008/08/27(水) 12:03:04 ID:???] Queryデータ受け取って条件分岐してデータ読み書きしてHTML表示すればいいんじゃないかな
86 名前:nobodyさん mailto:sage [2008/08/27(水) 15:59:09 ID:???] 既存のHTMLってのがどの程度のものかわからないが、cgiにそれを出力させる必要がある。 外部のものなら、パーサーで解析してチェックボックスを割り込ませて出力、とかいうことになるんじゃないか。 この作業が一番めんどくさい。
87 名前:nobodyさん mailto:sage [2008/08/27(水) 19:52:46 ID:???] 古い本読んでたら、cgi-lib.plとかいうのが 紹介されていたんだけど、これって現役?
88 名前:nobodyさん mailto:sage [2008/08/27(水) 20:00:37 ID:???] 既に退役。
89 名前:nobodyさん mailto:sage [2008/08/27(水) 20:35:39 ID:???] まじで。じゃあどうすればいいのかな?
90 名前:nobodyさん mailto:sage [2008/08/27(水) 20:45:09 ID:???] 別に使ってもいいんじゃね
91 名前:nobodyさん mailto:sage [2008/08/27(水) 21:02:23 ID:???] CGI.pmが最新ですか?
92 名前:nobodyさん mailto:sage [2008/08/27(水) 21:25:25 ID:???] CGI.pmが標準。いささか古いが。 お好みでCGI::MinimalでもCGI::Simpleでも。
93 名前:nobodyさん mailto:sage [2008/08/27(水) 21:49:46 ID:???] 引数の取得は自前でするのが一番軽いから自前でというのは外道ですか? 車輪の再発明?
94 名前:nobodyさん mailto:sage [2008/08/27(水) 22:34:42 ID:???] やれるんなら自前だってなんだっていいさ。 トレーニングのための再発明にゃあ手頃な車輪だろ。 よそに迷惑かけないようにさえすりゃ誰も止めねえよ。
95 名前:nobodyさん mailto:sage [2008/08/28(木) 10:53:23 ID:???] クエリの分割は、RFCの決まりとブラウザの仕様で面倒なことになっているので、 CGIやCGI::Liteやフレームワークに丸投げした方がいい、と昔Perlスレで言われた
96 名前:nobodyさん mailto:sage [2008/08/28(木) 16:12:26 ID:???] CGI.pmと CGI::Minimalと CGI::Simpleとで、 どれを使えばいいの?
97 名前:nobodyさん mailto:sage [2008/08/28(木) 16:28:55 ID:???] とりあえずCGI.pm
98 名前:nobodyさん mailto:sage [2008/08/28(木) 20:19:56 ID:???] 勉強を目的に作る分には何も言わないが、 実際のサービスの為に作りこむのはアンチパターンの"高慢"。
99 名前:nobodyさん [2008/08/28(木) 22:31:17 ID:oELFSwba] スレチだったのでもう一度こちらで質問させていただきます PHPで言うところのupload_max_filesizeやpost_max_sizeは、 Perlではどこら辺を設定すればいいんですか?
100 名前:nobodyさん mailto:sage [2008/08/28(木) 22:57:12 ID:???] >>99 use CGI; $CGI::POST_MAX = $limit_by_byte;
101 名前:nobodyさん mailto:sage [2008/08/28(木) 23:59:40 ID:???] htmlやhttp勉強していたころからずっと今までCGI.pm使ってないな。。。LWPは使い出したが。 CGI.pmが簡単、は例からわかるんだが、 汚れた変なデータ渡されても誤動作しないのかとか デフォルト設定をちゃんと覚えないととかちょっとだけ不安。
102 名前:nobodyさん mailto:sage [2008/08/29(金) 08:08:31 ID:???] 古いPerlだとメモリーは無限で限界は考えなくて良いってコードが多いからその辺も気を付けるとか 何時の話だ
103 名前:nobodyさん mailto:sage [2008/08/29(金) 10:08:36 ID:???] そういう面倒なのをやってくれちゃってるのがそいつなんじゃないの?
104 名前:nobodyさん mailto:sage [2008/08/29(金) 15:26:13 ID:???] XSS対策で、引数の記号を適度に変換してくれるモジュールを自己開発しました。 マルチパートのパースがむつかしい、、、というかめんどくさい。。 while(<STDIN>) ってしたら、大きい添付ファイルきたらいちどメモリに確保する分つらいしな。。 readでちょっとずつ読むしかないのか、、
105 名前:nobodyさん mailto:sage [2008/08/29(金) 15:27:54 ID:???] ん? 質問内容がわからん
106 名前:nobodyさん mailto:sage [2008/08/29(金) 15:45:42 ID:???] 質問じゃなくてチラシの裏に書こうとした文だろう。
107 名前:nobodyさん mailto:sage [2008/08/30(土) 09:40:00 ID:???] ソースのコメントにでも書いておけ
108 名前:nobodyさん mailto:sage [2008/08/31(日) 18:20:50 ID:???] >>101 (== >>99 ?) Perl は汎用言語として開発されています。 そのためその言語仕様は CGI (をはじめとする Web プログラミング) など他の周辺仕様と直行しており、その点で PHP とは事情が異なります。 Web アプリケーション開発のために生まれたのが PHP で、 Web アプリケーション開発にも流用されているのが Perl であると言うこともできます。 Perl は CGI で利用できる言語として広く普及しました。 その過程で生まれたノウハウを抽出したものが CGI::* などのモジュール群です。 幸い CGI.pm は pure Perl ですから、この機会に目を通してみてはいかがでしょう。 その上で、あなたが必要とする品質に達していないと判断したなら、それは新しい車輪を作るに充分な理由だと思います。 イイモノができたら CPAN で公開してください。使わせてもらいます。
109 名前:nobodyさん [2008/09/02(火) 08:28:05 ID:guk/QrQq] Flashゲームを作成しています 今スコアについて作成しているのですが どうにも反映されません、何が違うのでしょうか Flashのスコア登録コードは stop (); CGIFile = "test.cgi?" + Math.floor(Math.random() * 1000); mySaveVars = new LoadVars(); mySaveVars.score = score; mySaveVars.playername = playername; myLoadVars = new LoadVars(); myLoadVars.onLoad = function (success) { var _loc1; for (var _loc1 = 0; _loc1 < RANK_MAX; ++_loc1) { ranker[_loc1].playername = myLoadVars["name" + _loc1]; ranker[_loc1].score = myLoadVars["score" + _loc1]; } // end of for gotoAndStop("display"); }; mySaveVars.sendAndLoad(CGIFile, myLoadVars, "POST");
110 名前:nobodyさん [2008/09/02(火) 08:30:11 ID:guk/QrQq] そしてtest.cgiには use CGI 'Vars'; my %in = CGI::Vars; open LOG, '+<score.dat'; my %rank = map { chomp; split /\t/, $_, 2; } <LOG>; $rank{$in{score}} = $in{name} if $rank{$in{score}} < $in{name}; my @rank = sort { $rank{$b} <=> $rank{$a} } keys %rank; truncate LOG, 0; seek LOG, 0, 0; print LOG map { "$_\t$rank{$_}\n" } @rank[0..9]; print "Content-type: text/plain\n\n"; print map { "score$_=$rank[$_]&name$_=$rank{$rank[$_]}&" } 0..9; test.cgiにはtop10の空欄表示はされますが 登録する画面にはいかずそのまま終わってしまいます score.datも空欄ですが、動いているようです
111 名前:nobodyさん [2008/09/02(火) 15:54:14 ID:XutqN0xS] 汎用のエラーサブルーチンで、 ログに場所や原因を特定できる情報を吐くために、 callerで大元の呼び出し元からのツリーを吐く方法を探してます。 力技でやれば、階層確認用の変数を作って mainから関数を呼ぶたびに1ずつインクリメントしていってエラー関数でforで 階層確認用の変数の分だけ回せば出来るとは思うんですが、 sub err { my ($sadd) = @_; my $s; for ($i=MAXVALUE; $i <= 0; $i--) { $s .= caller($i).' / '; } print STDERR $sadd."\n".$s; } 手動でインクリメントすることなく、上記のMAXVALUEを取得する方法はありませんでしょうか。
112 名前:nobodyさん [2008/09/02(火) 17:08:26 ID:62/De0KZ] 以下の場合だと、$hogeにはIPアドレスが入ってます。 $hoge=gethostbyaddr(pack('C4',split/\./,$ENV{'REMOTE_ADDR'}),2)||$ENV{'REMOTE_ADDR'}; 以下の場合だと、$hogeは空になります。 $hoge=gethostbyaddr(pack('C4',split/\./,$ENV{'REMOTE_ADDR'}),2)or$ENV{'REMOTE_ADDR'}; 後者が空になってしまうのは何故ですか?
113 名前:nobodyさん mailto:sage [2008/09/02(火) 17:20:16 ID:???] 後者は以下と同じこと ($hoge=gethostbyaddr(pack('C4',split/\./,$ENV{'REMOTE_ADDR'}),2)) or$ENV{'REMOTE_ADDR'};