Perlコーディング初心者質問スレ Part 57

このエントリーをはてなブックマークに追加
952944:2008/07/30(水) 18:06:58 ID:d+B9EpcH
>>951
でwwwけwwwたwwwww

そのとてつもなく親切なmanは一体どこのww
JMの成果物かしら?
うちのmanはそんな丁寧に書いてないですw

ググったら POSIX を適切に use するようにしておけばコードに対応するエラーメッセージが得られる事も分かりました
果てしなくありがとう♪


>>949-950
うん。
タイムアウト付きでselectしてconnect自体は完了してもconnectに成功したかどうかを調べる方法を知らなかったんだ
953nobodyさん:2008/07/30(水) 18:10:55 ID:???
>>952
linuxの日本語マニュアルだからたぶんJMだね
954nobodyさん:2008/07/30(水) 18:42:46 ID:???
なんという質問の後出し。
955nobodyさん:2008/07/31(木) 01:58:02 ID:oOtEPfmn
mod_perlについて質問させてください。
debian Etch、Perl5.8.8 mod_perl2.0です。
初めてmod_perlを試してみたんですが、CGIの動作がうまくいきません。
レスポンスヘッダを出力して欲しくないのに出力されてしまい、
しかもContent-typeがtext/plainになっています。
.htaccessで下記のように設定しています。

SetHandler perl-script
PerlResponseHandler ModPerl::RegistryPrefork
PerlSendHeader Off
Options +ExecCGI

通常のCGIとして正しく動いていて、mod_perlにしてもヘッダが
オカシイ以外は正しく動いている風です。

何かアドバイスをお願いします!
956nobodyさん:2008/07/31(木) 16:52:57 ID:???
mod_perl2でファイルが開けません。
エラーログ見ると、
Permission denied
とあります。普通のCGIだとファイルが開けるのにmod_perl2だと開けないというのは
何か特別な作法のようなものがあるのでしょうか。
超困っているのでお助けを・・・
957nobodyさん:2008/07/31(木) 23:29:50 ID:???
>>956
mod_perl のプロセスオーナと CGI (の Perl スクリプト実行の際に呼ばれる perl) のプロセスオーナが異なっているからでしょう。たぶんね。
958955:2008/08/01(金) 00:03:22 ID:???
なんか色々勘違いしてました。PerlSendHeaderはonが通常動作なんですね。
ステータスコードを自分で吐きたいときもあるんで、と思ったんですが、
別にONで構わないんですね。ただ、OFFにしてヘッダを頭から出力しても
うまくいかないのはよく分からず。

>>956
カレントディレクトリの食い違いじゃないですよね。定番なのに僕は嵌りました。
ユーザー違いはsuExec。whoamiで確認。昨日かじった程度の知識です。
959nobodyさん:2008/08/05(火) 02:44:01 ID:dDXLNQi4
Basic認証なんだけど、.htpasswdファイルってどのくらいまでパスワード登録できるのかしら?
例えば1万件とか、どうでしょう?
960nobodyさん:2008/08/05(火) 08:41:47 ID:???
>>959
スレチだけどいいや。
1万件なら独自に認証システム作った方が良いと思う。
961nobodyさん:2008/08/05(火) 09:13:10 ID:???
>>959
できるけど普通はやらない。
962959:2008/08/05(火) 09:13:45 ID:dDXLNQi4
いや、Perlで認証システム作っているんだけど、
どっちみちBasic認証だと.htpasswd使わないとダメでしょ?
963nobodyさん:2008/08/05(火) 10:31:58 ID:???
日本語で
964nobodyさん:2008/08/05(火) 12:53:10 ID:??? BE:725033977-2BP(1)
自分の知ってる限り普通のテキスト形式の.htpasswdだと
766550件ってのが一番多いが問題なく動いてる。

せめてDBMかSQLiteかmySQLあたりにしたほうがいいかなとは思う


965nobodyさん:2008/08/05(火) 13:06:09 ID:???
mod_authn_dbmとかあるからな。ぜんぜんperl関係ないけど
966nobodyさん:2008/08/05(火) 14:17:26 ID:???
766550件もどうやって管理してるの?
967nobodyさん:2008/08/05(火) 14:52:27 ID:???
同時アクセスが少ないうちはいけるだろうな
968959:2008/08/05(火) 16:22:30 ID:???
いろいろ、参考になりました。どうもです。

766550件もあると、MySql使ってても、どうなんでしょう。うまくいくのかしら。
969nobodyさん:2008/08/05(火) 16:56:41 ID:???
会員管理するシステムはある。DBはsybase。

970nobodyさん:2008/08/05(火) 17:02:04 ID:???
MySQL は単純な key <=> value のデータなら 2億8千万件でも動く。
つーか運用してる( Web じゃないけどね。)。データ形式が違えど 76万件
なんて少ない方だと思うが…。
実行速度なんかは index 作製の有無に顕著に依存するがな。

そっちのスレ行ってみれば?
971nobodyさん:2008/08/05(火) 19:53:36 ID:???
perlスクリプト上から自身が実行されてるperlランタイムのバージョンを知る方法はないでしょうか?
スクリプトはmod_perl上で動作しています。
972nobodyさん:2008/08/05(火) 20:20:50 ID:???
print $];
こういうこと?
973971:2008/08/05(火) 20:35:02 ID:???
>>972
それですそれです。ありがとうございました。

チラ、5.006002‥‥‥(゚д゚)
974nobodyさん:2008/08/05(火) 20:39:02 ID:???
11歳でFカップかよ・・・
975nobodyさん:2008/08/05(火) 20:53:00 ID:???
何その入江紗綾
976jark'use:2008/08/05(火) 21:29:26 ID:???
perlでz-z.jpのトリップ作るために
http://z-z.jp/のbbs.cgiスクリプトをnull(ry
[禁止用語]で抜こうと思います。
そこでパラメータにいろいろあてはめてますがうまく抜けません。
実際に抜いた人はnullを使ってたみたいです。
あまり詳しくは公開できない情報ですのでヒントを教えてください
977nobodyさん:2008/08/05(火) 22:42:26 ID:???
>>976
板違いです。
ネットワーク板へどうぞ。

http://pc11.2ch.net/hack/
978nobodyさん:2008/08/06(水) 02:10:44 ID:tTNUWkPT
ファイル名の配列をディレクトリの浅い順に並べるのに

@files = sort {scalar split('/', $a) <=> scalar split('/', $b)} @files;

って書いたら

Use of implicit split to @_ is deprecated

て言われました。どう書くのが今時ですか?
979nobodyさん:2008/08/06(水) 06:35:34 ID:???
>>978
splitをscalarで使うと文句を言われるから、tr/\///などで数える方法に切り替える。
あと、シュウォーツ変換を使うと効率が上がる。
980nobodyさん:2008/08/06(水) 12:03:05 ID:???
「今時」てえのは知らんが、やり方なんざ山程あるぜ。
@_ のなんたるかを理解してるなら
sort { ( @_ = split m{/}, $a ) <=> ( @_ = split m{/}, $b ) } @files ;
でもいいし、普通に捨て配列作ってもいいしTMTOWTDI。
sort { ( my @A = split m{/}, $a ) <=> ( my @B = split m{/}, $b ) } @files ;
sort { @{[ split m{/}, $a ]} <=> @{[ split m{/}, $b ]} } @files ;
sort { sub { split m{/}, $_[0] }->($a) <=> sub { split m{/}, $_[0] }->($b) } @files ;
981nobodyさん:2008/08/06(水) 12:28:12 ID:???
山程あるならたった4例だけじゃなくて山のほうを紹介してよ
982nobodyさん:2008/08/06(水) 12:40:22 ID:???
>>981
ググれ
983nobodyさん:2008/08/06(水) 13:43:13 ID:???
「今時」を考えると効率を多少犠牲にしても
見やすく書いたほうがいいんじゃないかな
984nobodyさん:2008/08/06(水) 13:55:55 ID:+ukCpM4+
今時でもファイルが万あると考慮すべき問題です
DISK I/O のコストを甘く見ないほうがいい
985nobodyさん:2008/08/06(水) 14:03:20 ID:???
$a = @aでいいものを$a=scalar @aとか$a= @{[ @a ]}とか$a=sub{@_}->(@a)とかバカだろ。
そういうのはTMTOWTDIとはいわない。
986nobodyさん:2008/08/06(水) 15:45:53 ID:???
978〜の流れでDISK IOなんか発生してないし
犠牲にするのが多少じゃないんだったら考慮するのはあたりまえじゃ
987nobodyさん:2008/08/06(水) 17:10:27 ID:???
perl -w -le '$a = split m{/}, q{/hoge/foo} ;'
でワーニングが出るって事をすっとばしてる奴がいるなあ。
perl -w -le '$a = @_ = split m{/}, q{/hoge/foo} ;'

元の質問に「コストも計算して」ってのがあったら、
シュワルツかシャチ泳ぎの二択になるんだけど
my %tb ;
sort { ( $tb{$a} ||= split m{/}, $a ) <=> ( $tb{$b} ||= split m{/}, $b ) } @files ;

988nobodyさん:2008/08/06(水) 17:33:19 ID:???
979が指摘したtrで数えたほうがいいという件についてはスルーですか?

それにスカラーコンテキストのsplitでなぜ警告が出るか理解してる?
@_を書き換える副作用があるからなんだけど。

シュワルツ使うのもシャチ泳ぎ使うのもいいけど、splitで数えるのは
おすすめできない。
989nobodyさん:2008/08/06(水) 17:53:17 ID:???
>>988
>それにスカラーコンテキストのsplitでなぜ警告が出るか理解してる?
だからリストコンテキストにして明示的に@_に代入してんじゃんw
>>985の「$a=@aは、元質問では直接使えない」って指摘しただけだよ。

tr///もs///gも書き換えを行なってるんだから、ここで変な人為ミスが入る可能性
が高いよ。俺は使うし好きにしたらいい。
元質問からsplitで説明しただけだから。
990nobodyさん:2008/08/06(水) 18:06:15 ID:???
まあ、元の変数には影響が無いけどワーニングは出るかもってのと
元の変数で書き換えが起こるってのじゃあなあ
 1000万文字の内のTのカウント
とかだと実行速度の問題もあってsplitは使わんが、コメント必須
にしてるなあ、実際先人の件の人為ミスで酷いことになった事あるし
991nobodyさん:2008/08/06(水) 18:12:39 ID:???
なんか難しい議論が進んでるけど、俺は動けば何でもいいやw
だって初心者だもん

webprogの目的は、狭義には見て貰う人のユーザービリティーを高めるとか
サイトの付加価値を高めるのが目的なんであって、perlで動いていようが、phpだろうが
利用者には関係のないこと。

ましてや、どう書くかなんて見えないわけで、そりゃ自分の手技向上のためにいろいろ
議論する価値はわかるけど、エンドポイント(サイトの付加価値を高めるなど)を
忘れて、単に技巧にだけ走ってしまうのは好きではないな。

やりたいことが、自分の技量の範囲の中でできれば、それで目的は達成できるじゃん。
992nobodyさん:2008/08/06(水) 18:17:08 ID:???
tr/hoge//のように2つ目のところを空にして使う分には置換なんて起きませんが、
コメントしないとわかってもらえないレベルの人がいるんじゃ大変だなぁ。javaとか
使った方がいいんじゃない?
993nobodyさん:2008/08/06(水) 18:24:39 ID:???
>>992
知ってるってw
それを知らない人がtr/T/t/しちゃったんだよ
貴方の様に知ってる人間ばかりだったら、コメントしないよ
予期しないバグをなるべく排除したいだけなんだ、共同開発してるから
ワーニングだけで済むならそれにこしたことは無いし
994nobodyさん:2008/08/06(水) 20:01:34 ID:???
warningを無視するぐらいなら、最初から付けなければいいのに。
995nobodyさん:2008/08/06(水) 20:06:03 ID:???
きがついてるが放置してるか
気が付いてないかはちがうんじゃないかな
996nobodyさん:2008/08/06(水) 20:30:17 ID:???
>>995
実際に落とし穴に嵌ったときに、気付かなくなるよ。
どうしてもというなら、必要な箇所に no warnings; を入れるべき。
997nobodyさん:2008/08/06(水) 22:36:24 ID:???
>>994
言葉足らずと言うか真意が違ったすまん
ワーニングなら気付くんだ、俺か誰かが
で、ラインナンバーまで解るから解決は早い
他の人の担当であっても指摘しやすい
そもそも自分のコーディングの時気付くw

上のトラブルの時はスパゲティーの中だったんで、
苦しいのなんのって…
998nobodyさん:2008/08/06(水) 22:50:23 ID:???
次スレ立ててもいいですか?
999nobodyさん:2008/08/06(水) 22:54:16 ID:???
てか聞いてる余裕はあまり多くないようですね、レス数的に。
立てます。
1000nobodyさん:2008/08/06(水) 22:55:25 ID:???

         .∧__,,∧
        (´・ω・`)
         (つ終と)
         `u―u´
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。