Perl コーディング初心者質問コーナー Part37

このエントリーをはてなブックマークに追加
1nobodyさん
Perlのコーディングで困ってる人のスレです。
誰もが最初は初心者。
だからって、初心者に甘んじた質問の仕方は意味がないよ。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

1: 自分はこう言う事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。

最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。

過去ログやお勧めサイトは >>2-10
21:04/08/22 01:43 ID:???
前スレ989さん、ありがとう!

関連スレ
【Perl上級者コーナーPart01】
http://pc2.2ch.net/test/read.cgi/php/1024741312/
CGI: Common Gateway Interface part 11
http://pc2.2ch.net/test/read.cgi/php/1055597189/
【Perl,CGI】参考書籍 第三版
http://pc2.2ch.net/test/read.cgi/php/1030209573/
★三 【 スクリプト改造工房 PART 8 】 ★三
http://pc2.2ch.net/test/read.cgi/php/1077525387/
【 スクリプト改造依頼スレ 】(丸投げ) part2
http://pc5.2ch.net/test/read.cgi/php/1092304968/
△▲ WebProg 初心者の質問 Part9 ▼▽
http://pc5.2ch.net/test/read.cgi/php/1086715675/
【Perl】ファイルロック(排他処理)について語ろう
http://pc2.2ch.net/test/read.cgi/php/1024795138/
★負荷軽減対策委員会(Perl、PHP)★
http://pc2.2ch.net/test/read.cgi/php/1034645635/
【Perl】掲示板を使ろう!
http://pc2.2ch.net/test/read.cgi/php/988890976/
Perlモジュールについて
http://pc2.2ch.net/test/read.cgi/php/997829243/
CGIに依存しないPerlの話題一般/Part2
http://pc2.2ch.net/test/read.cgi/php/1030548610/
31:04/08/22 01:43 ID:???
41:04/08/22 01:44 ID:???
51:04/08/22 01:45 ID:???
ム板Perlスレより

[プログラミング自体の経験が無い奴はまずココを読め]
Perlプログラミング講座: http://www5a.biglobe.ne.jp/~n_rieko/perl/

[本]
リャマ: http://www.oreilly.co.jp/BOOK/lperl3/
駱駝: http://www.oreilly.co.jp/BOOK/pperl3v1/
Effective Perl: http://www.ascii.co.jp/books/detail/4-7561/4-7561-3057-7.html
クックブック: http://www.oreilly.co.jp/BOOK/pcook/

[オンラインマニュアル]
Perldoc.com: http://www.perldoc.com/
perldoc.jp: http://www.perldoc.jp/
perl5.005_03 のドキュメント: http://www.kt.rim.or.jp/%7ekbk/perl5.005/

[モジュール]
CPAN.com: http://search.cpan.org/
河馬屋二千年堂: http://member.nifty.ne.jp/hippo2000/

[テクニック]
Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm
Perlのページ: http://homepage1.nifty.com/nomenclator/perl/

61:04/08/22 01:45 ID:???
補足

コーディング 【coding】

プログラミング言語を使ってソフトウェアの設計図にあたるソースコードを作成すること。
「プログラミング」とほぼ同義だが、仕様書やフローチャートなど抽象的な設計文書の内容を、
プログラミング言語を使って具体的なコードに変換していく、という意味合いが強い。
(e-Wordsより)

自分の質問がPerlに関することなのか、
それともPerlではなくCGIやHTMLについてなのかを切り分けした上で、
質問して下さい。
71:04/08/22 01:47 ID:???
これは漏れの考えではあるけれど、
http://www.geocities.co.jp/SiliconValley/5656/
とか
http://www.hyuki.com/writing/techask.html
なんかを参考にするといい。

ここでは匿名で書き込むことが出来るけど、
その他のマナーなんかの点は実名公開のMLなんかと一緒。

マターリ行きましょ。
8nobodyさん:04/08/22 01:51 ID:???
>>1
氏ねよマヌケ野郎が!
テンプレはてめーの日記じゃねーぞ!
9nobodyさん:04/08/22 02:06 ID:???
このスレは糞が勝手に>>1を書き換えたので次スレを立てる時は注意してください。


いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

1: 自分はこう言う事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。

最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。

過去ログやお勧めサイトは >>2-10
10前スレ989ですが:04/08/22 02:09 ID:???
すいません、前スレの 5 もお願いできますか?
さっきから貼ろうとしてるんだけど Time out が出るばかりで貼れないんです...orz
11nobodyさん:04/08/22 02:21 ID:???
テンプレも満足に貼れないやつが立てちまったか・・・
グダグダなスレになっちまったな。
12nobodyさん:04/08/22 03:05 ID:???
13nobodyさん:04/08/22 03:05 ID:???
「漏れ」って何?
14nobodyさん:04/08/22 03:06 ID:???
[総合]
 ・http://www.excite.co.jp/world/ # 英文のページ多いから一応
 ・Perl Com: http://www.perl.com/
 ・CPAN.com: http://search.cpan.org/
 ・ActivePerl: http://www.activestate.com/
 ・CGI-ML:http://forest.ne.jp/cgi-ml/

[お薦め]
 ・Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm ★読んどけ
 ・Perl Recipes: http://www.effectiveperl.com/recipes/ # 死んでるか?
 ・Randal's WebTechniques columns: http://www.stonehenge.com/merlyn/WebTechniques/
 ・Perlの部屋: http://www.cc.rim.or.jp/~midorin/mad-p/perl/index.html
 ・Perl初心者の部屋:http://www.harukaze.net/~mishima/perl/
 ・Perlリファレンス:http://www.big.or.jp/~mio/ga/pl/plref/pl_ref.htm
 ・Perlのページ:http://homepage1.nifty.com/nomenclator/perl/
15nobodyさん:04/08/22 08:46 ID:???
漏れって漏れのことさ 厨はカエレー
16966:04/08/22 13:14 ID:???
前スレの996だけどとりあえずブロックの返り血ってのは最後の行で。
ブロックないではreturnは使えないからそれようのルーチンでも作る。

ってことでok?
17nobodyさん:04/08/22 13:27 ID:???
>>16
ブロックはifと同じだよ。
18nobodyさん:04/08/22 14:02 ID:???
>>16
> 前スレの996だけどとりあえずブロックの返り血ってのは最後の行で。
わかってるだろうけど、最後に実行した行。
で、おk
191:04/08/22 14:11 ID:???
正直、すまんかった。

################
#ここから言い訳#
################
#いや、5の張り忘れに気づいて張ろうと思ったら
#連続投稿規制に引っかかっちゃったのよ。ゴメソ
#
#たださ、聞きたいんだけど>>1って書き換えちゃいけないもんなの?
#過去にも何度か変わってきてるから、概要があってりゃいいと思ったんだけど。
#無意味な中傷はキニシ(・∀・)ナーイ
20nobodyさん:04/08/22 14:51 ID:???
>>19
内容に納得いかないとスレ乱立になるときがある。
だから書き変えるときは前スレでちゃんと同意をとれ。

とりあえずスレ立てご苦労様。
21nobodyさん:04/08/22 14:52 ID:???
>>19
> 誰もが最初は初心者。
こんなこと書くなよタコ。
「誰もが最初は初心者」=「回答者は質問者に尽くすべし」っていう脳内変換が起きるんだから。
次の行で何か書いてるけど意味ねぇよ。一度↑こうなったら何を言っても無駄。
22nobodyさん:04/08/22 15:10 ID:???
>>21
>>1を弁護するわけじゃないが、そういう脳内変換する奴はそもそも>>1を読まないので影響ない。
書く必要性は全くないが。
2310:04/08/22 15:40 ID:???
何はさておき
Perl コーディング初心者質問コーナー Part37
http://pc5.2ch.net/test/read.cgi/php/1093134840/
↑これ立てて 2 で挫折した人は早急に削除依頼へゴー。

>>19
とりあえずスレ立て乙。自分は立てられなかったし。

テンプレ部の改定は当然可だけど、他の人の意見もあるからね。
Part35→36のときは
「改定点は?」「スレ違いのお客さんが多いよね」みたいな話があったうえで
>>6の補足が入ったから、もめたりしなかったわけですよ。

個人的には >>1 は構わないけど >>2 を見たときに「お礼はうれしいけど、そこに書いたらあかん!」と
思ったのと、あと >>7 が余分かな。

# 初心者さんは見に行かないし、回答者はURL見ただけで「あー、はいはい」だからね。

とりあえず、この状況が続くと質問者さんが来づらいだろから、事態の収拾を考えましょ。
241:04/08/22 16:01 ID:???
>>20-23
やっぱり、このスレの人たちは教えるのに向いてるよ。色々ありがとう。

こんな状態でアレなんだけど、2つ目の中途半端なスレの方が上にあると、
どうしようもないだろうから一応ageとくことにする。
25nobodyさん:04/08/22 16:09 ID:???
age
26nobodyさん:04/08/22 16:28 ID:???
Perlについての質問箱 11箱目
http://pc5.2ch.net/test/read.cgi/tech/1090889189/641-

Perlにバグがあったみたい..
27nobodyさん:04/08/22 18:53 ID:???
誰かネタ投下しる。新スレになっていきなり勢いが落ちたな。
28nobodyさん:04/08/22 20:18 ID:Bvv0gWWG
foo(@x, @y) で、
sub foo 内で @x と @y を別に受け取ることはできますか?
@_ だと結合されているので・・・
29nobodyさん:04/08/22 20:36 ID:???
>>28
そのままじゃ無理。リファレンス使え。
3028:04/08/22 20:39 ID:Bvv0gWWG
あ、無理ですか。
素直にリファレンスを使います。
どうも。
31nobodyさん:04/08/22 22:09 ID:???
ここが本スレですよってことでOK?

もひとつの Part37 を立てた人がほったらかしてるっぽいんで、
こちらへの誘導貼り付け&削除依頼して来ようかと思うんだけど、
皆さんのご意見は?
32nobodyさん:04/08/22 22:11 ID:???
>>31
OK
33nobodyさん:04/08/22 22:29 ID:???
>>29
それじゃせっかくの餌も台無し。
プロトタイプ使えとか言えよ。
34nobodyさん:04/08/22 22:52 ID:???
>>31
あっちの1だけどよろしく。
テンプレミスッタんで放置してた。
じゃそういうことで
35nobodyさん:04/08/22 23:06 ID:???
>>34
氏ねよ!
3623=31:04/08/22 23:07 ID:???
>>32
レスThx.
ともあれ仕事のほうはやっつけてきますた。


そろそろ回答者もヒマしてるはずなので、
次の質問者さん、どうぞー。
37nobodyさん:04/08/23 13:11 ID:???
>>28
perldoc perlsub

sub foo(\@\@) {
my ($x, $y) = @_;
print "x: @$x\n";
print "y: @$y\n";
}

foo(@x, @y);

便乗質問
リファレンスの場合は、sub foo($$); で宣言して、foo([1..10], [1..10]) みたいに直接値を渡せるけど。
sub foo(\@\@); の場合って、配列変数に値を入れてからじゃないと無理?
38nobodyさん:04/08/23 13:22 ID:???
そんなイレギュラーな使い方をするところにプロトタイプなんか使わん。
39nobodyさん:04/08/23 15:01 ID:???
>>37
>>28 に「perldoc perlsub」とか書いておいて自分は読まないのか?

<q cite="http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlsub.html#Prototypes">
バックスラッシュが付けられたプロトタイプキャラクターは、実引数がその
キャラクターで始まるものでなければならないことを表します。
<snip>
$で表される引数はスカラーコンテキストを強制されます。
</q>

sub mypush(\@$) { push @{ shift @_ }, @_ }

my $array = [0..3];
my @array = (6..9);
my $rv = mypush @{$array}, @array;
print join ',', @{$array}, "$rv\n"; # 0,1,2,3,4,5
40nobodyさん:04/08/23 23:46 ID:73HB43dm
Can't declare constant item in "my" at index.cgi line 191, near ");"
index.cgi had compilation errors.
こんなのがでます。なにが悪いんですか?
41nobodyさん:04/08/24 00:09 ID:???
>>40
デクレアできないぞボケェ!
ってPerlが叫んでるw
42nobodyさん:04/08/24 00:28 ID:???
>>41
悔しいけど、ちょとワロタ。でも、もすこしサービスしなさいな。

>>40
これだけではなにが悪いのかわかりませんよ。
index.cgiの191行めに

my (1, 2, 3);

↑例えばこんな行がありそうな気はするけれど。
43nobodyさん:04/08/24 01:21 ID:???
>>42
俺もにやけてしまったよw
4440:04/08/24 01:36 ID:a9PEnejB
解決しますた
45nobodyさん:04/08/24 03:09 ID:???
>>40
ここは質問と回答で成り立つスレです。
後から同じ状況に陥った人が参考にできるように
何をどうしたら解決したのか、
原因は何だったのか、
かわいい妹がいるのかどうか、
そういった事をきちんと書きなさい。
46nobodyさん:04/08/24 12:22 ID:???
47nobodyさん:04/08/24 13:17 ID:???
>>40
はやくかけよ、
まってんだから。
48nobodyさん:04/08/24 15:10 ID:???
>>47
どうでもいいだろ
どうせアフォなミスだって
49nobodyさん:04/08/24 18:35 ID:nkf/AOE6
おまいらメールのSubjectに日本語使う時にMINEエンコードするのってなにでやってる?
mime_pls?モジュール?自作?

自作ってカッコイイよな。
50nobodyさん:04/08/24 19:10 ID:???
MINEってカッコワルイよな。
51nobodyさん:04/08/24 19:13 ID:???
>>49
また知ったか厨か・・・
52nobodyさん:04/08/24 19:18 ID:???
>>51
お前のPCで
「ちゅう」
って打って変換したら常に初めに「厨」になるんだろうな・・・・・
53nobodyさん:04/08/24 19:36 ID:???
>>52
なるけど、何か?
54nobodyさん:04/08/24 20:50 ID:???
>>49
mime_plsはRFC2047を満たさないので自作してますが。
55いらすま:04/08/24 21:03 ID:Hn5K2dOO
えーとですね。改造自由な掲示板のソースを手に入れたとですよ。
掲示板の背景の色をかえたいのですが、どうしたらよいので??
56nobodyさん:04/08/24 21:09 ID:???
>>49
オレはIM::Iso2022jp使ってる
57nobodyさん:04/08/24 21:42 ID:???
>>55
サングラスをかけろ
58nobodyさん:04/08/24 21:48 ID:???
>>55
まずは、あちこちの板に駄スレを立てまくるのをやめれ。
59nobodyさん:04/08/24 22:30 ID:???
おまえらJcode使えない環境か?
ってまあ74バイト区切りで改行いれなきゃいけないとか面倒なことがあってそれだけじゃたりないんだっけ?

フォームメールなんて作ったことないからわからんなw
60nobodyさん:04/08/24 23:08 ID:???
>>57
でっ、できる・・
61nobodyさん:04/08/24 23:20 ID:???
ここはナイスな回答者が揃っていて好き
62nobodyさん:04/08/24 23:48 ID:???
>>57
それじゃあ背景以外も変わっちまうだろボケェ!
おまいはセンスはいいんだが、いつも後一歩だな。
63nobodyさん:04/08/25 00:17 ID:???
おいおい ちょーまじれす
64nobodyさん:04/08/25 00:40 ID:???
おまいらPerlの場合ってモジュールとただのライブラリってどっちがいいと思う?
最近オブジェクト指向でモジュールを1個作ってみたんだけど、確かに再利用性は高いし
インターフェースだけ覚えとくだけで便利なのは間違いないけど、それってライブラリもそんなに大差ないよね。
ライブラリの方が手軽だしさ。

まあDBIくらいになるとオブジェクト指向の方がいいんだけど、みんなはどんな感じで使ってる?
やっぱ小中規模であれば、1個モジュール1個ライブラリってのがいいと思うんだけどさ。
65nobodyさん:04/08/25 00:48 ID:???
サブルーチンを再利用したいなら、普通の関数呼び出しのライブラリの方が手軽でいいかも。
メインルーチンを再利用したいなら、クラスモジュールにしとく方が有利かも。
66nobodyさん:04/08/25 01:06 ID:???
>>65
ほう!そうゆう考え方が主流なのね。

基本的にある程度の振る舞いをもったオブジェクトが欲しい時とか
一貫性のある処理でそれだけで独立させたいときがムジュール。

ちょっとこれだけ再利用。みたいなものの集まりをライブラリとするってのが賢いよね。

ボンジュ〜ル?
67nobodyさん:04/08/25 01:17 ID:???
オブジェクトだろうと、関数の集まりだろうとモジュール。。。
68nobodyさん:04/08/25 01:20 ID:???
>>67
頭固いよ。。。
69nobodyさん:04/08/25 10:09 ID:piXV00NL
画像のカウンタプログラムを書いていますが、
画像連結ライブラリを使うと本当に読み込みが早くなるのでしょうか?
返答よろしくお願いします
70nobodyさん:04/08/25 10:13 ID:???
何故試さん
7169:04/08/25 11:23 ID:???
調べたり、テストしたりしましたが、わかりません
72nobodyさん:04/08/25 11:24 ID:???
画像連結ライブラリって、内部でGIFを連結してprint OUTで一気に出力するアレでしょ?
カウンタなんて小さい画像の集まりだから、HTTPヘッダによるオーバーヘッド分がなくなるだけでも有利でしょうな。
大きな画像連結なら負荷やメモリを気にするところだが。

Perlの手始めは向いてるね。カウンタ。
7369:04/08/25 11:27 ID:???
>>72
ありがとうございます。失礼ですが、もしPHPだといったいどうなのでしょうか?
74nobodyさん:04/08/25 11:34 ID:???
いっしょだよ
75nobodyさん:04/08/25 11:36 ID:???
テストしたいんだったら、1000ファイルくらい画像連結させて比較すれば差がでるんじゃないの。
7669:04/08/25 11:37 ID:???
>>74,75
ありがとうございます
77nobodyさん:04/08/25 11:40 ID:???
っと、1000ファイルすべて違うファイル名にしないと意味ないけどさ。ブラウザにはキャッシュというものがあるからね。
78nobodyさん:04/08/25 12:39 ID:???
>>69
お前みたいにくだらない部分にこだわるやつに限ってゴミソースで重かったりする。
だまってテーブルレイアウトやめればそんなくだらない差は気にならなくなる。

ついでに言うと連結処理あり、なしのベンチとってそれもちゃんと考慮に入れろや。
79nobodyさん:04/08/25 18:46 ID:???
>>75
1000ファイルもあると I/O のコストの方が高くならない?
逆にHTTPサーバーの方のキャッシュが期待できる連結なしの方が早くなりそうだし、
最適化の仕方次第で結果が代わったりするんじゃないかな。(予想だけど
ベンチマークとるなら実際の運用環境に近い条件でやらないと意味がないと思う

>>69
GIF画像の連結はやったことないので、一般的な回答になるけど。
アルゴリズムの優劣とかならはっきりとした一般答がでるかもしれない、
でも、こういった、環境や実装に大きく依存するベンチマークは自分でとらないと役にたたない。
画像連結の方法だけとってみても、perlでやるのか、ライブラリか、外部プログラムに頼るのかで結果が代わってくるはず。

80nobodyさん:04/08/25 18:59 ID:???
>>77
この場合、キャッシュは考慮すべきといっても、offにすべきではないと思う。
連結なしの場合、httpヘッダでcache controlや期限を適切に設定していれば、
ファイルを送る必要はなく文字列出力だけで済む事もあるのだから。

クライアント数とアクセス数を分けて考えてテストする必要がある。
(再訪問者が多い場合にクライアント側のキャッシュの効果が期待できる)
81nobodyさん:04/08/25 19:21 ID:???
82nobodyさん:04/08/25 19:25 ID:???

(;・∀・)また、騙されたの?
ttp://pc5.2ch.net/test/read.cgi/php/1060009605/

% kill -9 81 || kill -9 81 || kill -9 81
% killall -TERM me
83nobodyさん:04/08/25 23:12 ID:???
>78
今回に限って言えば、ベンチは意味が薄いのではないだろうか。
サーバとの経路とかでも結果が大きく変わるだろうし。
84nobodyさん:04/08/26 00:15 ID:???
クライアントから一回だけ要求を受け取って、
2種類のレスポンスを返す方法ってありますか?

例えば
GETで要求されたURLの応答に
200 OK
を返した直後にクライアントとの接続を閉じずに
304 Not Modified

を返せるような。
どなたかお知恵を貸してください。お願いします。
85nobodyさん:04/08/26 00:19 ID:???
>>84
無理。
どういう理由でそういうことをしたいのかを明確に書けば別解のアドバイスが出てくるかも知れず。
でも、ここはperlコーディングスレなので、webprog 初心者スレの方がいいんじゃないかな。
86nobodyさん:04/08/26 00:25 ID:???
>>85
そっちできいてみます。ありがとうございます。
87nobodyさん:04/08/27 07:40 ID:gO3gmMRy
SSIで、9桁の乱数を生成して表示するスクリプトはどのようにして
作ればよいのでしょうか?
例えばどこかのhtmlから<!--#exec cmd="ransuu.cgi"-->を呼び出すと
253145968や040104580とかランダムな9桁の数値を返すものです。
全くの初心者で困っています。教えて下さい、お願いします。
88nobodyさん:04/08/27 07:52 ID:???
rand;rand;printf "Content-type: text/plain\n\n%09d",rand(10**9);
8987:04/08/27 08:43 ID:???
>>88
本当にありがとうございます!!!!!!!!
90nobodyさん:04/08/27 10:01 ID:???
>>83
遅レスだけど、ベンチはローカルでやるのが普通だろ。
91nobodyさん:04/08/27 10:16 ID:???
>>88
あたまでrandを2回呼んでるのはなぜ?
9288:04/08/27 15:08 ID:???
3回目のrandが返す値が好きだからー!!
93nobodyさん:04/08/27 17:15 ID:???
<FORM method="POST" action="hogehoge">
<INPUT type="submit" name="Reload" value="再読込">
</FORM>
こんな感じでホームページに設置されているボタンを押すPerlスクリプトって作れないでしょうか。
94nobodyさん:04/08/27 17:51 ID:???
>>93
そのスクリプトの用途を聞かせ願えないか?
95nobodyさん:04/08/27 18:07 ID:???
すみません。物騒な聞き方でしたね。
こういう感じのサーバなのです

1.FTPサーバーに管理ファイルをアップする。
2.社内のローカルホスト(http://192.168.0.200:8080/reload.html)にアクセスして更新ボタンを押して更新完了
3.上記をファイルの数だけ繰り返す

私のところに1の管理ファイルがバイトから1日10件くらい集まるので、
これをいちいちアップして更新して・・・というのは、かなり面倒なのですが、
社内鯖の仕様を変更するのは問題があるので、自動でアップ処理してくれるスクリプトを組もうと思った次第です。
最終的には

1.設定フォルダ内のファイルを社内鯖にアップする
2.更新ボタンを押す
3.これを毎朝9時に行う

ということをしたいのです。
96nobodyさん:04/08/27 18:17 ID:ScoK2mkg
>>95
対策@私の場合
1.バイト君にFTPサーバーの特定のディレクトリにファイルをうpするように指示をする。
2.その特定のディレクトリを監視するスクリプトを、例えばcronで1時間ごとに起動して、
  ファイルが存在すれば何らかの更新作業をさせる。
3.私は他の作業をする。
97nobodyさん:04/08/27 18:17 ID:???
ボタンを押すというのは難しいから、そのデータPOSTを自前でやった方が良いと思われ。
98nobodyさん:04/08/27 18:50 ID:???
へたれですみません。どうやったらいいんでしょうか > データPOST
99nobodyさん:04/08/27 18:53 ID:???
getではだめなの?
getならリクエスト1個で終わるんだけどね
100nobodyさん:04/08/27 19:08 ID:???
Net::FTPとLWPがあればささっと書けそうだけどな。
101nobodyさん:04/08/27 19:14 ID:???
>>97
ボタンを押すほうが簡単じゃないでしょうか??
10293:04/08/27 19:15 ID:???
とりあえずFTPのところは書き上げて、手元で動かす分には問題ない程度に動いてます。
WWWは扱ったことがないので、ぐぐって勉強してます。

>96
支給されてるクライアントがNTなので、タスクマネージャーで実行しようと思ってます。

>99
サーバ側の仕様には手を出せないのでPOSTでがんばってます。

>100
ttp://member.nifty.ne.jp/hippo2000/perltips/LWP.html
これでいいんでしょうか? 入手してみます。
103nobodyさん:04/08/27 20:43 ID:???
LWPで普通に出来ないか?
104nobodyさん:04/08/27 22:09 ID:ScoK2mkg
>>102
> 支給されてるクライアントがNTなので、タスクマネージャーで実行しようと思ってます。
ではそれで毎日9時に動くようにすれば?
でもってなぜCGIが必要なんだろう?
確認ならばメールで通知、返信すれば自動で更新作業させるなりと方法はあるのに。
105nobodyさん:04/08/27 22:28 ID:???
なんで「ボタンを押す」ことが必要なのだろうか。
ブラウザ立ち上げておかないといけないし、強制終了してしまっていたら立ち上げなおしたりしなきゃいかんし。
106nobodyさん:04/08/27 22:34 ID:???
>104-105
おまえら少しは文章を嫁
10793:04/08/27 23:10 ID:???
お世話になっております。

ttp://digit.que.ne.jp/work/index.cgi?Perl%a5%e2%a5%b8%a5%e5%a1%bc%a5%eb%2fLWP#i5

この辺りを読んで解決しました。また1つ賢くなれました。ありがとうございました。
108nobodyさん:04/08/28 00:00 ID:???
>>106=意味不明
109nobodyさん:04/08/28 02:17 ID:???
どっちにしろ>>95を信じたやつは(ry
110nobodyさん:04/08/28 13:06 ID:???
>>101
ボタンを押すのが簡単ってのは人間が操作する場合で、プログラムにとっては、POSTリクエスト送る方が簡単。
プログラムでそういったことをエミュレートしたいなら、ブラウザのオートメーションを調べてみるといい。

冗長になるは言うまでもないけど。一応フォローしておくと、
HTTPの仕組みを知らない人にとってはこっちの方がコードが簡潔だったりする、
ちょっとした用途にスクリプトを書く場合でもコードを大幅に節約できるといった利点がある.
111nobodyさん:04/08/28 17:38 ID:???
なんでもいいから犯罪者にアドバイスはヤメレ
112nobodyさん:04/08/29 22:39 ID:???
検索CGIを作っているのですが、
エスケープが必要な文字の検索で詰まってます。

$str =~ s/($key)/<$1>/g;

こんな感じで、ヒットしたキーの前後に文字を追加してるんですが、
これだと、正規表現の文字(ドット. や プラス+ )自体を検索することが
できません。

何かいい方法ありますでしょうか
113nobodyさん:04/08/29 22:53 ID:???
114112:04/08/29 23:11 ID:???
>>113

ありがとうございます!
quotemetaなんて便利なものがあったんですね。
115nobodyさん:04/08/30 10:02 ID:???
116nobodyさん:04/08/30 10:28 ID:???
そういえば、ひさびさPerlスレ見た
117nobodyさん:04/08/30 13:20 ID:WEq7wEdz
@data = split(/\//, $_);

"/" でセパレートされた文字列を分解してそれぞれ配列に入れたいのですが、
どうすればいいか教えてください。
118nobodyさん:04/08/30 13:27 ID:???
>>117
119nobodyさん:04/08/30 13:29 ID:???
>>118
同意。
120nobodyさん:04/08/30 13:30 ID:???
>>118
>>119
どこが?なのでしょうか?
121nobodyさん:04/08/30 13:37 ID:???
すいません。
分かりました。。。

>>117の1行目が答えなんですね。(-_-;)
122nobodyさん:04/08/30 17:23 ID:???
何が起こったんだ
123nobodyさん:04/08/30 17:29 ID:I+lehIeA
すみません、3つ以上の数が等しいかどうか調べたいのですが、
以下のようにやってもエラーになります。
perl -e '$var=1; $var1=1; $var2=1; print "Ok!\n" if ($var==$var1==$var2==1);'
どうやったらいいのでしょうか。おせーてください。

124nobodyさん:04/08/30 17:37 ID:???
>>123
and
125nobodyさん:04/08/30 17:41 ID:???
>>124
えっと、>>123の場合は、1なので、==をandに代えればできますが、他の数の場合
まずいです。
perl -e '$var=1; $var1=1; $var2=2; print "Ok!\n" if ($var and $var1 and $var2 and 2);'
これでもOk!になってしまいます。
126123=125:04/08/30 17:44 ID:???
あそうか、一個ずつandでやるんですね。
($var == 1 and $var1 == 1 and $var2 == 1)
もっと簡単な方法がないかと思ったものですから。
24ケースくらいあるんで書くのたいへん(TT)
127nobodyさん:04/08/30 17:52 ID:???
>>126
my @var1 = (3, 3, 3, 3, 3, 3);
my %tmp = (); @tmp{@var1} = ();
print "var1 ", 1 == keys %tmp ? 'ok.' : 'no.', "\n";

my @var2 = (2, 2, 2, 2, 4, 2);
%tmp = (); @tmp{@var2} = ();
print "var2 ", 1 == keys %tmp ? 'ok.' : 'no.', "\n";
128nobodyさん:04/08/30 17:52 ID:???
>>126
ループ
129nobodyさん:04/08/30 17:56 ID:???
よいこは1 == keys %tmpと書かずにkeys %tmp == 1と書こうね。
130nobodyさん:04/08/30 18:02 ID:???
>>129
根拠は?
131nobodyさん:04/08/30 18:47 ID:???
読みにくいから
132nobodyさん:04/08/30 19:53 ID:???
>>130
比較では不確定なモノを左に書くのが一般的。
これを逆に書くと何となく気持ちが悪い。
それを何とも感じないヤシはセンスが悪い。
133nobodyさん:04/08/30 20:15 ID:???
もしその人がバカだったらぶん殴ってやる
もしバカがその人だったらぶん殴ってやる
134nobodyさん:04/08/30 20:58 ID:???
CPAN落ちてない?
135123=125:04/08/30 21:04 ID:???
>>127
高度な技を伝授いただきありがとうございます。
@tmp{@var1} = ();
というところですが、ハッシュの配列ということでしょうか。
これは、らくだ本にも出ていますでしょうか。今手元にない
のですが。

136nobodyさん:04/08/30 21:07 ID:???
定数を左辺に書くと==と=を間違えたときにすぐわかるけどね
137nobodyさん:04/08/30 21:22 ID:???
>>135
ハッシュのスライスだね。ぐぐれば出てくるよ。
138nobodyさん:04/08/30 21:23 ID:???
139nobodyさん:04/08/30 21:33 ID:c+ZgByNi
$name2が、$name3[0]〜$name3[$i]のどれかの値と一致した場合にある動作をするようにしたいのですが
どうやればよいでしょうか。
140nobodyさん:04/08/30 21:44 ID:???
>>136
その言い訳は何年も前に死滅したはずだが?

Found = in conditional, should be == at -e line 1.

頭が化石になってますよ。
141nobodyさん:04/08/30 23:29 ID:WEq7wEdz
for(0..10) {
for(0..10) {
・・・・・
}
}

ネストさせると、最初のfor文は$_ですが、中のfor文は何になるのですか?
142nobodyさん:04/08/30 23:32 ID:???
>>141
143nobodyさん:04/08/30 23:38 ID:???
>>141
$_
144nobodyさん:04/08/30 23:50 ID:???
>>139
for(@name3){
print"bingo\n" if($_ eq $name2);
}
145nobodyさん:04/08/30 23:59 ID:???
>>141
変な質問ですみません。

>>143
ネストしてても一緒なんですか。

for(0..10) {
  for(0..10) {
    $data[$_][$__] = ・・・
    ・・・・・
  }
}

だったらいいなと勝手に思ってました。
そうすると

for(0..10) {
  for($i=0; $i<10; $i++) {
    $data[$_][$i] = ・・・
    ・・・・・
  }
}

とすべきなんですね。
146nobodyさん:04/08/31 00:56 ID:???
>>145
for(0..10) {
  for my $i (0..10) {
    $data[$_][$i] = ・・・
    ・・・・・
  }
}
147nobodyさん:04/08/31 04:35 ID:nQH60qUM
truncateについて教えてください。
winxpにversion 5.005_03 built for MSWin32-x86-objectですが、思ったとおりにtruncateが動作しません。

open(FILE,'>aaa.txt');
print FILE "aaaaaaaa";
seek(FILE,0,0);
truncate(FILE,0);
print FILE "bbbb";
close(FILE);

これは、思ったとおりに動きます。aaa.txtは「bbbb[eof]」の4バイトになります。

$aaa='FILE';
open($aaa,'>aaa.txt');
print $aaa "aaaaaaaa";
seek($aaa,0,0);
truncate($aaa,0);
print $aaa "bbbb";
close($aaa);

これは、なぜか「bbbbaaaa[eof]」の8バイトになります。
seekは正しく機能して、truncateは機能していないからこの結果だと思うのですが、なぜ機能しないのでしょうか。
上の例を見ても、truncate機能自体はあると思うのですが・・・
148nobodyさん:04/08/31 05:22 ID:???
>>147
お前が馬鹿だから
149nobodyさん:04/08/31 06:56 ID:???
truncate($aaa,0) or die $!;
150nobodyさん:04/08/31 07:11 ID:???
>>147
$aaa='FILE'; → $aaa = *FILE;
151145:04/08/31 08:36 ID:???
>>146
ありがとう。
もとめていたスマートなコードです。
152nobodyさん:04/09/01 00:24 ID:IFM26Jlf
だれか教えてください。
ダウンロードというボタンをおしたら、CSVがダウンロードできる仕組みにしたいです、
153nobodyさん:04/09/01 00:39 ID:???
>>152
途中でやめるなよ
154nobodyさん:04/09/01 00:58 ID:???
>>152
してください
155nobodyさん:04/09/01 01:15 ID:IFM26Jlf
すまん。152だ。

だれか教えてください。
ダウンロードというボタンをおしたら、CSVがダウンロードできる仕組みにしたいです。

が正解でした。といううことでおしえてください
156nobodyさん:04/09/01 01:23 ID:???
>155
教えてやろう。
PerlもCGIも使わなくてもできる。
よって板違い。
157nobodyさん:04/09/01 01:47 ID:IFM26Jlf
156よ。よく考えれば単にリンクを張ればよいな。アドバイスあんがと
158Pearl:04/09/01 01:56 ID:???
print <<"END";
...
END

と終端文字列を記述すると何も表示されないのに、

print "...";
print <<"END";
...
END

とすると表示されます。(print"...";の内容は表示されません)
これは何故なんでしょうか??
初心者ですいません…。
159nobodyさん:04/09/01 02:16 ID:???
そこより前のコードで"が開きっぱなしと見た。
160nobodyさん:04/09/01 12:01 ID:VNRqZmig
perlでのoop時の属性についてなんですが、
hashでの実装、use fieldsでの実装
どちらがいいんでしょうか?
fieldsのが便利だと思うんですが、
内部でpseudo-hashを使ってる?らしく
pseudo-hashは今後推奨されなくなるようで
その辺り困ってます。
--------------------------------------
sub new {
my( $class, $name, $height ) = @_;
my $this = {
'name' => $name,
'height' => $height
};
bless $this, $class;
}
--------------------------------------
use fields qw( name height );
161nobodyさん:04/09/01 12:17 ID:???
>>160
5.9.0以降ではpseudo-hash使わない実装に変更されたので
普通に使う分には問題ないんじゃなかったっけ。内部の
phash直接触るような行儀悪いプログラム書いてりゃ別だけど。
162nobodyさん:04/09/01 12:33 ID:VNRqZmig
>>161
ありがとうございます!
なるほど、確かに、phashを直接使うなみたいな事は書いてありました。
perl6になったらこの辺も変わりそう?ですし、
perl5では、これでいいってことで!
163nobodyさん:04/09/01 18:16 ID:GIk9V8QY
sendmailを使ったプログラムを作ってるんですが、どうやらメールの件名に
日本語を使う時には特別な処理が必要なのですね。

今いろいろなサイト見てますが、皆さんのオススメの解説サイトがありましたら教えてください。
おながいしますm(_ _)m
164nobodyさん:04/09/01 18:28 ID:???
特別な処理???
メール送信の基本はperlに限ったことではないが
165nobodyさん:04/09/01 18:41 ID:???
>>163
解説サイト?

無いよ。
嘘だと思うんなら自分で探してみ?
166163:04/09/01 19:59 ID:GIk9V8QY
>>164
件名の分だけ他とは違うエンコードをしないといけないという意味です。
>>165
そうなのです。あまりいいところが見つからないのです。
実際のサンプルソースとかを載せながら解説してるサイトがあるといいなと思ったのですが;
167nobodyさん:04/09/01 21:10 ID:???
RFC嫁
168nobodyさん:04/09/01 21:49 ID:Fq5X9xKH
print "Location: http://www.yahoo.co.jp/\n\n";
上記のコードでリダイレクトさせる前に
htmlタグを読み込ませたいと思います。

<IMG SRC="http://www.hogehoge/test.cgi" width=1 height=1>
例えば上記のようなタグを読み込ませたい場合、
どのようにコードすればいいのでしょうか?

おながいします



169nobodyさん:04/09/01 22:00 ID:???
>>166
お勧めサイトは(・∀・)ココダ!!
ttp://www.ietf.org/rfc/rfc2047.txt

>>168
うーん。
> width=1 height=1
リダイレクトした「数」をカウントできればいいというわけではないの?
170nobodyさん:04/09/01 22:06 ID:3SqQ1yBx
$hoge = file( "http://www.hogehoge/test.cgi" );
print "Location: (p)http://www.yahoo.co.jp/\n\n";
171>>163:04/09/01 22:26 ID:5tu92ZqP
$subj = Jcode::convert(\$subj, 'jis');
$subj = MIME::Words::encode_mimeword($subj, 'B', 'iso-2022-jp');
172nobodyさん:04/09/01 22:38 ID:???
>>171
今時Jcodeなんて教えるなよ
173nobodyさん:04/09/01 22:39 ID:???
今5.8のサーバは少ないだろ。。つーか、ほとんど無いと思われ。
174168:04/09/01 22:51 ID:Fq5X9xKH
>>169-170

レスありがとうございます。
そうですね、数をカウントできればいいというわけではないです。

$hoge = file( "http://www.hogehoge/test.cgi" );
これについてなんですが、
http://www.hogehoge/test.cgi の部分に変数を用いたい場合、
どんな感じになるでしょうか?初歩的な質問すいません。
http://$variable.com/test.cgi のようなURLにしたいのですが。
$hoge = file( "http://$variable.com/test.cgi" );
で変数として扱われるんでしょうか?
175163:04/09/02 01:14 ID:hfUgeMHv
>>169
英語よめません;
>>171>>173
>$subj = MIME::Words::encode_mimeword($subj, 'B', 'iso-2022-jp');
これって5.8でないと駄目なんですか?使用サーバのperlは5.6ですが。
後、このモジュール?ライブラリ?ってRFC2047の
1.encoded-word は 75バイト以内でなければならない.
2.encoded-word を含む行は 76バイト以内でなければならない.
をクリアしてないですよね?PERLメモ読んでて、とりあえずBASE64エンコードは
なんかのモジュールでやるとしても1と2をどうしようかと迷ってます。

みなさんはちゃんと1と2に対応したサブルーチン等を作ったりしてるんでしょうか?
176nobodyさん:04/09/02 01:20 ID:???
>>175
辞書ひけや馬鹿野郎
177nobodyさん:04/09/02 01:28 ID:???
>>175
いいから自分で作ったというコードを晒せよ。
特別な処理とか、何を勘違いしてるのかわからん。
178163:04/09/02 01:50 ID:hfUgeMHv
<input type="text" name="to">
<input type="text" name="subject">
<textarea name="body"></textarea>

use MIME::Base64;
require "jcode.pl";
受け取ったフォームデータをデコード+JIS変換して%formを作成。(コード省略)
$encode_word = encode_base64($form{subject});

open MAIL,"|sendmail -t";
print MAIL<<END;
From: [email protected]
To: $form{to}
Cc:
Bcc:
Subject: =?ISO-2022-JP?B?$encode_word?=
 
$form{body}
END

これでは
1.encoded-word は 75バイト以内でなければならない.
2.encoded-word を含む行は 76バイト以内でなければならない.
をクリアできないですので。
179>>163:04/09/02 02:09 ID:LLw2NK0r
何を期待しているのかよくわからんけど、文字列の長さなら、エンコードやら
バージョンやらモジュール云々じゃなくて、自分で制御すればいいだけでは?
ttp://www.hippo2000.info/perl/myfull.htm

180163:04/09/02 02:14 ID:hfUgeMHv
>>163
はい。エンコードは別にたいした問題はないのです。
1.encoded-word は 75バイト以内でなければならない.
2.encoded-word を含む行は 76バイト以内でなければならない.
3.encoded-word はそれぞれ独立してデコード可能でなければならない.
4.encoded-text をデコードした文字列の文字コードは,最後に ASCII が指定された状態でなければならない.
5.encoded-word が現れる出現位置に関する決まり.
 Subject や Comment のヘッダフィールドなどの, 'text' 内に出現.
 "(" と ")" で区切られた 'comment' 内に出現.
 From や To,CC ヘッダなどで,'phrase' 内に出現.
 'addr-spec' 内で出現してはならない.
 'quoted-string' 内で出現してはならない.などなど.
6.隣り合う encoded-word の間の 'linear-white-space' は無視する.

これらをクリアするのに皆さんは自分でエンコード前の準備用としてのルーチンを
自作してるんでしょうか?というのが>>175での質問です。
181:04/09/02 02:30 ID:???
182163:04/09/02 02:40 ID:hfUgeMHv
>>181
>このサブルーチンは、RFC2047に完全には準拠していません。RFC2047では、ASCII文字列は、エンコードしないことを推奨していますが、このスクリプトでは、簡略化するために、すべてをエンコードしています。

紹介のサイトでは上記以外の違反はしてないみたいですが
企業でのメーラーとして使う場合はどの程度準拠すればいいのでしょうか?

ところで>>181さんは>>180の1〜6をどこまで守ってsendmailを利用されてますか?
一般的なレベルが知りたくなってきました。
183nobodyさん:04/09/02 03:27 ID:???
>>182
おまいperlメモ読んでるなら、そこにあるソースをそのままもらえばいいのに。
あれならほぼokだろ。まあちょっと長いけどな。>>181のサイトは俺も見たが
asciiもエンコードしちゃう点を除けばかなりいい。jcode.plさえあれば誰でも
できるってのが手軽だしな。

そもそもPERLメモの方はsubject以外でも使えるし、デコードまでやれるルーチイだから
比べてもしょうがないな。ちなみに俺はフォームメールなど作ったことなし!
184nobodyさん:04/09/02 03:41 ID:???
>>181-3
use strict環境下で動かないコードなどクソ。
185nobodyさん:04/09/02 11:21 ID:3eXmd8V2
#!/usr/local/bin/perl

$logfile = "./sizecount.dat";

$count = -1;

$count += (-s "$logfile");

open(OUT,">>$logfile");
print OUT "\n";
close(OUT);

print "Content-type: text/html\n\n";
print "countdate=$count\n";

参考書通りに作ったカウンターなんですけど
アップロードして動作確認したら正常に動いたので
flashMX2004でダイナミックテキスト、変数dispcountに
表示させたいんですけど、出来ません。
チェック用の一応変数checkにはloadcompleteと表示されました。
アクションスクリプト
System.useCodepage = true;

CGIfile = "sizeount.cgi";
myLoadVars = new LoadVars();
myLoadVars.onLoad = function(){
dispcount = myLoadVars.countdate;
check = "loadcomplete";
}
myLoadVars.load(CGIfile);
186185:04/09/02 11:25 ID:3eXmd8V2
続き
CGIの下から2行目はprint "Content-type: text/plain\n\n";
に変更してからフラッシュでやったんですけどなぜか表示されません、、、
これまで変数を受け取るだけや送るだけのサンプルは参考書通り出来てたのですが
お願いします。
187185:04/09/02 11:31 ID:3eXmd8V2
追加
ブラウザのキャッシュ関係ではありません。
お願いします。
188185:04/09/02 11:35 ID:3eXmd8V2
度々すいません
ダイナミックテキスト,変数dispcountにはundefineと表示されます。
お願いします。
189nobodyさん:04/09/02 11:38 ID:???
ぱっと見だが、Perl のコードに問題は無いと思う。
おそらく Flash の方に何らかの問題があると思われるが、
残念ながら Flash についてはこのスレで扱う範囲ではない。
190185:04/09/02 11:42 ID:???
>>189
わかりました。
ありがとうございました。
フラッシュ板言ってきます。
191nobodyさん:04/09/02 14:52 ID:???
>>180
俺は1〜6全部クリアしたライブラリ作ったが、たいていはそこまで必要ないので
作る奴はそういないだろうな。特に何が問題なのかも分からんような奴しか集まらん
このスレには。
ちなみに1〜6を完全に満たしたままだと、そうでないアホなエンジンが5を
無視してエンコードしたものを戻せないので、X-Mailerが自身ならstrictモード、
他ならlooseモードで動くようにしてる。
商用なので公開はせんが。
192nobodyさん:04/09/02 18:06 ID:LZDH898f
>>174へのレスをキボンヌでございます
193nobodyさん:04/09/02 22:18 ID:0Sj0dIST
ActivePerl5.8.4を使っています。
ShiftJISのデータをDBから取得して、そのデータを使って
UTF-8のXMLファイルを作成したいのですが、うまくできません。
いろんなサイトを見てみましたが、うまくできないので
方法をご存知な方がいましたら、教えてください。
194nobodyさん:04/09/02 22:38 ID:???
UTF-8に変換してください
195nobodyさん:04/09/02 23:59 ID:0Sj0dIST
普通にやるとできるみたいです。
DBからできないのはなぜでしょうか?

use Encode;

my $a = "あああ";
Encode::from_to($a, "shiftjis","utf8");

$xml =<<"EOF";
<?xml version="1.0" encoding="UTF-8" ?>
<test>$a</test>
EOF

print $xml;
196nobodyさん:04/09/03 02:42 ID:d4bnE4Tf
@array = (1,5,8,6,2,1,3,8,6,4) #任意の数字
から、中央値、最頻値を求めるには、どうすればいいですか?
モジュールは見つかったのですが、レンタルサーバーなので使えません。

誰かわかる人いたら教えてください。
よろしくお願いします。
197nobodyさん:04/09/03 02:59 ID:???
>>196
"中央値","最頻値","アルゴリズム"でググってみてください.
198nobodyさん:04/09/03 03:23 ID:???
>>192
なんでやってみないわけ?
199nobodyさん:04/09/03 09:07 ID:???
>>196
@array = (1,5,8,6,2,1,3,8,6,4); #任意の数字
# 中央値
$#array % 2 ? $m=($#array+1)/2 : $m=$#array/2;
$median=(sort @array)[$m];
print "中央値は、$median。\n";
# 最頻値
for(@array){
$hindo{$_}++;
}
foreach $key (keys %hindo){
$max=$hindo{$key} if $hindo{$key} >= $max;
}
foreach $key (keys %hindo){
push(@max, $key) if $hindo{$key} == $max;
}
print "最頻値は、@max。\n";
200nobodyさん:04/09/03 09:46 ID:???
>>195
DBから取り出したものがそのテストプログラムで
想定してるのと同じものかは確認したか?
201196:04/09/03 11:54 ID:???
>>199
ありがとうございました!
やっぱり結構難しいプログラムになるんですね。
とても自分のプログラミングテクニックじゃできませんでした・・・
202nobodyさん:04/09/03 13:23 ID:???
これで難しいってか
203nobodyさん:04/09/03 13:55 ID:???
わかりやすくかけば
204nobodyさん:04/09/03 22:27 ID:qXHB0Gmy
Perl最新版をインスコして.plファイルをデスクトップに置いたら
トカゲのアイコンがポコチンに見えた
205>>163:04/09/03 22:51 ID:???
結局163は作りたくないのか?
よくわからんが、選択肢は3つってとこか

1. このまま放置(案外これかもな)
2. JISじゃなくてUnicodeにしてMIME-Headerエンコする(作り込みなしで完璧)
3. 頑張ってJISと2047に固執する(作ったらcpanにあげてくれw)

> $header = encode('MIME-Header', $utf8);
206174:04/09/04 01:17 ID:jFFI5mOb
>>198
無理でございました
207nobodyさん:04/09/04 01:37 ID:???
>>206
meta refreshじゃなくてLocation使う理由は?
208nobodyさん:04/09/04 11:47 ID:zUjRJg63
質問でふ

http://news.fs.biglobe.ne.jp/news/photo/

にある

映画「釣りバカ日誌」の歴代のヒロイン役で誰が一番好き?

という投票結果がエラーになったり投票総数が0になったりします。

ハングル板ではビグロブによる結果改竄じゃねーかって祭りになってるので
すが、本当でしょうか?

教えてエロい人!
209nobodyさん:04/09/04 11:55 ID:???
>>208
で、それがperlコーディングに何か関係あるのかね?
210nobodyさん:04/09/04 11:55 ID:zUjRJg63
>208

すいませんまちがいです

http://news.fs.biglobe.ne.jp/special/sanmenkiji.html



最近人気急上昇の韓国俳優「四天王」で誰が一番かっこいい?

の投票でした・・・
211nobodyさん:04/09/04 12:22 ID:???
ハングル板ってこんなことで祭りになるのか。
ま、スレ違い。
212nobodyさん:04/09/04 13:23 ID:???
スレ違いでも答えてあげるのが人情
213nobodyさん:04/09/04 13:28 ID:???
>>212
じゃあ、おまいが答えてやれよ。
214nobodyさん:04/09/04 15:42 ID:llgg8ga3
|・ω・`)
215nobodyさん:04/09/04 16:07 ID:???
>>208 >>210
俺が使っている
 カウンターは
  1日1000以上回ることが保証されている。
 アンケートは
  人がいなくてもリロードするだけで増えていく。
 チャットは
  必ず知らない人がいる。

プログラムは作られたとおりにしか動かないのです。
216nobodyさん:04/09/04 16:26 ID:L+DB05Rw
フォームから送られてくるデータの中にある改行コードを\nに置換したいんだけど、
$str =~ s/\r\n|\r/\n/g;
でいいっけ?なんか自分が書いた以前のコードに
$str =~ s/\n\r|\r/\n/g;
っていう逆になってるのがあって色々調べたら、\r\nの方が圧倒的に多いけどたまに
\n\rって書いてるコードもあった・・・・・

\r\n || \x0D\x0A
で正規表現するのが正解だよね?
217nobodyさん:04/09/04 16:37 ID:???
\r\nでいい
218nobodyさん:04/09/04 16:37 ID:???
>>215
で、そのカウンターは1分で1000以上回ることは保証されているわけ?
219nobodyさん:04/09/04 17:34 ID:uW2eM/jV

FreeBSD5.2.1 perl5.6.1
でperlスクリプトを書いています。
ファイルにある$$に囲まれた文字列をキーにして
ハッシュから値を取り出して出力しようとしていますが、
うまくいきません。
単純な置換ならうまくいくのですが、どうすればそのようなことが
可能なのでしょうか?

うまくいかないコード↓
while(<FILE>){
s/\$\$(.+)\$\$/$hash{\1}/g;
print $_;
}

目的の出力↓
hash("key1","val1","key2","val2")

FILE
文字列$$key1$$文字列
文字列$$key2$$文字列


出力結果
val1
val2
220nobodyさん:04/09/04 17:41 ID:???
221174:04/09/04 17:47 ID:jFFI5mOb
>>207
metaをどのように使うか分からないんです涙
metaにする利点はあるのでしょうか?
222nobodyさん:04/09/04 19:30 ID:???
>>221
http://tohoho.wakusei.ne.jp/html/meta.htm
■ 別ページへの自動ジャンプ10秒後にURL=...で指定したURLにジャンプします。ホームページの移動の際に用いている例があります。IE3.0、Netscape Navigator 2.0 でサポートされています。
<meta http-equiv="Refresh" content="10;URL=http://xyz.com/">
223174:04/09/04 19:49 ID:jFFI5mOb
>>222
申し訳ないですが、
htmlでなら分かりますが、perlでは分かりません。
224nobodyさん:04/09/04 20:10 ID:???
氏ね
225nobodyさん:04/09/04 20:18 ID:???
.htaccessにErrorDocumentを記述して
オリジナルのエラーページを作成しています。
 
エラーの元になっているファイル/フォルダのURLをオリジナルのエラーページに表示させようと
http://<!--#echo var="SERVER_NAME" --><!--#echo var="REQUEST_URI" -->
というコマンドと環境変数を使っていますが、
オリジナルのエラーページのURLが表示されます

ステップサーバー(http://stepserver.jp)というレンタルサーバーを利用しており、
そのサポートに問合せましたが、上記の記述で問題ない、との回答でした。

何かアドバイス・ヒントを頂けないでしょうか?
226nobodyさん:04/09/04 20:25 ID:???
>>223
申し訳ないですが、なにが分からないのか分かりません。

>>225
申し訳ないですが、それのどこがperlに関する質問なのか分かりません。
227nobodyさん:04/09/04 20:43 ID:???
どこで見た質問だったかしばらく思い出せなかった...orz

CGI: Common Gateway Interface part 11
http://pc5.2ch.net/test/read.cgi/php/1055597189/956
228nobodyさん:04/09/04 20:55 ID:DfAuufFl
CGI で Perl 使って画像を出力したい(具体的にはグラフが描きたい)んですが
どうやればいいのでしょうか?
229174:04/09/04 20:57 ID:jFFI5mOb
ていうか、最初の質問がperl上でのhtmlタグの出力の仕方が分からないっていう
内容なんだけど、アフォですか?
meta分かったらそもそもこの質問してねーだろ??
>>224
おまえが(以下略
230nobodyさん:04/09/04 21:14 ID:???
231nobodyさん:04/09/04 21:15 ID:???
>>229
metaにperlは無関係


まだ夏は終わらんのか?
232nobodyさん:04/09/04 21:17 ID:???
ていうか>>174のレベルが初心者の域じゃない
>htmlタグの出力の仕方が分からないっていう
なんだこれ?おちょくってんのか
233nobodyさん:04/09/04 21:43 ID:???
DQNが発生するたびに「夏が」とかいうヤシきもいよ?
234nobodyさん:04/09/04 21:43 ID:???
>>230
GifGraphの解説がありましたが、最初の方に、
「CPANには他にもChart-PNGgraph、GDgraphといったものもあり、
どれが今後も残っていくのかよくわからない状態です。(2000/1/5)」
と書かれています。いったいどのモジュールが現在主流なので
しょうか。質問ばかり申し訳ありません。
235nobodyさん:04/09/04 21:53 ID:???
>>232
おまえが勝手に初心者の定義を決めるな
>>174
(・∀・)カエレ!
236nobodyさん:04/09/04 23:05 ID:???
>>234
主流なモジュールを使わないといけない理由は?
237nobodyさん:04/09/04 23:09 ID:mKo8NLNs
cygwinのbashコンソールから、あるソフトをperlで立ち上げたとき、
そのソフトが終わらないと、そのコンソールがperlに乗っ取られた
まま使えなくなっちゃうんですが、これは仕方ないのでしょうか。
exit;入れてもダメですた。
system("Desktopmem.exe");
exit;
238nobodyさん:04/09/04 23:12 ID:???
>>236
後々まで使っていきたいから、サポートっていうか、情報が
たくさん得られそうなものを選ぼうと思って・・・
239nobodyさん:04/09/04 23:51 ID:DfAuufFl
240nobodyさん:04/09/05 00:00 ID:???
>>237
そういうものです。
コマンドの後ろに & をつけてバックグランドで実行するか、
デーモン化するのが、常套手段です。
241nobodyさん:04/09/05 00:05 ID:???
xcalのその日のスケジュールをdesktopmemoのスケジュール形式に
perlで変更して保存、それをdesktopmemoに読み込ませて起動と
いうことをやりたいので(スタートアップに登録)、すると、
バッチファイルかシェルスクリプトしかないですかね。
242nobodyさん:04/09/05 00:07 ID:???
ごめんなさい、>>241>>237です。
で、ショートカットにすれば&で大丈夫のようですね。
243nobodyさん:04/09/05 00:13 ID:???
>>239
ありがとうございます。
今は、GDGraphなんですね。実は、オライリーの「perlによるwebプログラミング」
とかいう本、かなり前に買ってあって、あれには、GifGraph、Gimpが中心に説明
してあったので、うーむ、ちょっと隔世の感。やってないのがいけないんだけど。
244210:04/09/05 00:15 ID:7pvSYkfO
>215

スレ違いなのに回答ありがとうございます。

ただ、結局何をおっしゃりたいのか今ひとつよくわからなかったんですが
プログラムの想定外の事態が起こったということでしょうか?

245nobodyさん:04/09/05 00:23 ID:???
>>244
>>215は知ったかだから放置しとけ
246nobodyさん:04/09/05 06:56 ID:???
さぁ、何か聞いて来い
247nobodyさん:04/09/05 10:26 ID:gdlM8Pd7
掲示板のcgiで、下記のように引用された箇所の色を変えたいのですが、
どのように実現したら良いか方法をお教えください。

例えば、変数$textに下記のデータが入っているとして
--------------------------
> 引用元のテキスト1
> 引用元のテキスト2
> 引用元のテキスト3

返信テキスト
--------------------------

1桁目に半角の'>'があった行を下記のようなデータに置き換えたいと
考えております。
--------------------------
<span class="quoted">> 引用元のテキスト1
> 引用元のテキスト2
> 引用元のテキスト3</span>

返信テキスト
--------------------------

また、スレ違いの質問でしたら誘導していただけると嬉しいです。
248nobodyさん:04/09/05 10:48 ID:???
>>247
マッチング
249nobodyさん:04/09/05 11:49 ID:???
>>247
俺なら一行ごとに
<span class="quoted">> 引用元のテキスト1</span>
ってやってから
</span><BR>\n<span class="quoted">
だのを削除するかもなあ。
正規表現ひとつだとややこしくなりそう。
250247:04/09/05 13:00 ID:???
>>248 >>249
回答ありがとうございます。

その方法でやってみます。 >>249
251nobodyさん:04/09/05 14:09 ID:???
>>247
$text =~ s|(^>.*(?:\n^>.*)*)|<span class="quoted">$1</span>|gm;
252247:04/09/05 19:15 ID:???
>>251
おお、>>247の条件はバッチリでした。

ただ引用ブロックが複数あると、2つ目以降に適用されないので、
もう1条件つけ加えることで、完全に期待通りの動作ができました。

>>248 >>249 >>251さん、とても助かりました。ありがとうございます。
253nobodyさん:04/09/06 00:59 ID:WMpYnmeW
FOXさんの実験を手伝ってください。

今VIPで伝説の機能を検討中ですが、、、よいアイデアが出ません。(andスキル不足)
良いアイデアがあってかつスクリプト提供していただけるなら非常に嬉しいのですが・・・

■ VIP に伝説の機能をつけよう。。。
http://ex7.2ch.net/test/read.cgi/news4vip/1094337276/
■ VIP に伝説の機能をつけよう。。。2
http://ex7.2ch.net/test/read.cgi/news4vip/1094394603/
■ VIP に伝説の機能をつけよう。。。3
http://ex7.2ch.net/test/read.cgi/news4vip/1094396742/
254nobodyさん:04/09/06 01:05 ID:???
断る!
255nobodyさん:04/09/06 05:54 ID:???
>>253
帰れ
256nobodyさん:04/09/06 09:22 ID:???
>>253
FOXが自分で頼みに来い
257nobodyさん:04/09/06 16:26 ID:???
書き込むごとにスロットが作動して、当たったら
何かプレゼントするとか。●とか
258nobodyさん:04/09/06 21:56 ID:???
規制機能は作れるのに、おみくじが作れないというのはこれいかに。
259nobodyさん:04/09/06 22:24 ID:Oq1gFU4V
1:  use strict;
2:
3:  for my $s (1..10)
4:  {
5:    print $s."\n";
6:  }

これをやると、3行目でエラーになります。

Missing $ on loop variable at C:\hoge\test.pl line 3.

2: my $s
3: for $s (1..10)

とすれば正常に動くのですが、上のようにforの後ろでmyを使用しているサンプルを良く見るので、原因を知りたいです。

OSはWinXPです。お願いします。
260nobodyさん:04/09/06 22:32 ID:???
>>259
俺んとこの ActivePerl 5.6.0 build623 (我ながらクソ古いバージョンだな) では
for my $s (1..10) でも問題なく動くんだが
君んとこの perl はどのバージョンのを使ってるんだ?
261nobodyさん:04/09/06 22:49 ID:xItUojLf
つーかそろそろ2ちゃんもCGI以外のアプローチを考えてみたらどうよ
262253:04/09/06 23:31 ID:anPS9KLr
VIPで今までに導入された新機能
・1001の文章変更
・おみくじ機能:メール欄に!omikuji
・Load Average表示機能:メール欄に!uptime
・レベル表示:メール欄に!power
・名前のカラー機能:名前欄に@XXXXXX@(XXXXXXは16進カラーコード)
・スレ立てた1が名無しの名前を決められる機能
(派生で強制フシアナスレ、強制名無しスレ、名無しフシアナスレ、ID非表示スレなどが可能)
・IDがひらがな
・ひらがなトリップ
・本文で<tt><pre>タグ使用可能(!tt, !pre使用で)

詳細はまとめサイトで
http://www3.tokai.or.jp/ss295/vip/

便利な機能等ができれば他板にも導入されるかも。
公開テストみたいな感じになってます。
263nobodyさん:04/09/06 23:33 ID:???
>>261
釣れまつか?
264nobodyさん:04/09/06 23:34 ID:???
・1001の文章変更
↑は新機能と言えるのだろうか。
265253:04/09/06 23:35 ID:???
>>264
1001のテキストを外部ファイルにして板毎に設定可能ということらしいです。
266259:04/09/06 23:44 ID:Oq1gFU4V
>260
5.003_07
でした。今から新しいのに変えてみます。
267259:04/09/06 23:57 ID:Oq1gFU4V
m(__)m
動きました!有難うございます。
ちなみにバージョンは5.8.4が最新だったのでそっちを入れました。
268nobodyさん:04/09/07 07:49 ID:???
>>253
スレ違いウザイ
269259:04/09/07 09:16 ID:vClBsqv3
たびたびスイマセン。
Perlのバージョンによる機能の差分を紹介しているページを知りたいのですが、どなたかご存じないでしょうか?
サーバのPerlがv5.00502なので、色々とエラーが出て困ってます。
270nobodyさん:04/09/07 10:01 ID:???
>>269
Changes嫁
271nobodyさん:04/09/07 14:04 ID:???
272nobodyさん:04/09/07 18:54 ID:???
質問です。
perlの処理で、”Enterキーを押す”っていう操作は
perlでは、どう記述するのでしょうか?
ご存知の方是非教えて頂きたいのですが?
273nobodyさん:04/09/07 19:17 ID:???
Enterキーが押されたことによって起きる結果を記述すればいいだろ
274nobodyさん:04/09/07 19:18 ID:???
>>272
偶然似たような質問がありましたのでご参考にされてはいかがでしょうか
ttp://pc5.2ch.net/test/read.cgi/tech/1090889189/961-963
275nobodyさん:04/09/07 19:19 ID:???
>>272
質問です。
1分も経たないうちにCGIとかPerlとか超初心者なんだけどスレとマルチポストしちゃうのは
どういう狙いがあるのでしょうか?
276nobodyさん:04/09/07 19:24 ID:???
277nobodyさん:04/09/07 19:44 ID:MmA4CFyc
643 :nobodyさん :04/09/07 18:58 ID:???
>>642
こ こ は 質 問 ス レ で は あ り ま せ ん

質問です。
1分も経たないうちにPerlコーディングスレとマルチポストしちゃうのは
どういう狙いがあるのでしょうか?
278nobodyさん:04/09/07 20:23 ID:???
PHPのstrtrと同様の関数をperlで使いたいのですが、
おながします
279nobodyさん:04/09/07 20:27 ID:KfcdHICt
質問で手抜きしやがる。ばからしい。
280nobodyさん:04/09/07 21:52 ID:???


   ↑ここまで独り言↑


   ↓ここから質問↓


281nobodyさん:04/09/07 22:54 ID:???
>>278
PHP:
$str = "3SHRUNYAXA";
print strtr(\$str,"AIUEO", "aiueo"), " ", $str;

Perl:
$str = "3SHRUNYAXA";
print $str =~ tr/AIUEO/aiueo/ . " " . $str;

どちらも3 3SHRuNYaXaと表示。
282259:04/09/08 00:54 ID:mcKNZ5q4
>>270,271
有難うございます。

って、全部英語なんですね・・・ 読めません(w;
283nobodyさん:04/09/08 01:43 ID:???
( -д-)=3 ハァ〜
284nobodyさん:04/09/08 05:39 ID:???
>>282
お前はぴゅう太でも使ってろ
285nobodyさん:04/09/08 08:57 ID:???
ぴゅう太てなんすか。
286nobodyさん:04/09/08 09:00 ID:???
日本語Gベーシック(・∀・)イイ!!
287nobodyさん:04/09/08 09:17 ID:???
>>285 オワリ
288nobodyさん:04/09/08 12:26 ID:???
>>285
pythonのことだよ
289nobodyさん:04/09/08 21:38 ID:bxg/BX6l
指定したテキストファイルに記載してある
[email protected]
[email protected]
・・・
などのメールアドレスを読み込ませて、
一致しなければ、”未登録です”と表示させたいのですが、
ファイルに登録してあるメールアドレスも未登録だと表示されてしまいます。
もう半日以上いろんなサイトを見ながら試行錯誤していますが、
一向に解りませんでした。
どなたかご教授ください。


#メールアドレスの登録チェック
$a=0;
open(IN,"$mailfile") || &error("Open Error: $mailfile");
while (<IN>) {
($eml) = split(/\n/);
if ($in{'eml1'} ne $eml) { $a++; last; }
}
close(IN);

if ($a) {
&error("$in{'eml1'}は未登録です。");
290nobodyさん:04/09/08 21:44 ID:???
>>289
ne → eq
if ($a) → if (!$a)
291289:04/09/08 21:53 ID:bxg/BX6l
>>290

素早いレスありがとうございます!
長時間悩んでいた自分が馬鹿でした・・・orz
292nobodyさん:04/09/09 00:28 ID:???
&uho;と&uho();は全く同じですか?
293nobodyさん:04/09/09 00:29 ID:???
意味不明
294nobodyさん:04/09/09 00:37 ID:???
292で言いたかったのは、
引数が空なのにわざわざ()を付ける意味はあるんですか?
()は書いても書かなくても同じですか?
ということです。
295nobodyさん:04/09/09 00:51 ID:???
コードの見易さが全然違う。
296nobodyさん:04/09/09 00:53 ID:???
レスありがとうございます。
納得しました。
297nobodyさん:04/09/09 02:56 ID:???
298nobodyさん:04/09/09 08:53 ID:???
&foo(); # 空リストを渡す
&foo;  # &foo(@_) と同じ

よって、&foo ≠ &foo()
299nobodyさん:04/09/09 17:36 ID:wkS7yjyl
時間について質問
$tim = time;
で$timに「1094716247」といった10桁の数字が入りますが
この数字の内訳(? というかしくみを教えて欲しい・・・

やりたいことは
$dat = date('Y.m.d H:i', time());
で$datに入る「2002.09.09 15:00」といった文字列を
上の10桁の数字に変換することなのですが。
おねがいします。
300nobodyさん:04/09/09 17:40 ID:???
301nobodyさん:04/09/09 17:56 ID:???
>>299
localtimeの逆をやりたいなら
use Time::Localをしてtimelocal関数を使う
302nobodyさん:04/09/09 21:24 ID:???
テスト的に作ったtimelocalもどき。もっとマシなロジックにしたいのぉ。
sub timelocal {
my ($sec,$min,$hour,$day,$mon,$year) = @_;
my @month = (31,28,31,30,31,30,31,31,30,31,30,31);
$year += int($mon/12); $mon = $mon%12; $hour -= (localtime(0))[2];
my $days = -719162;
$year += 1899; $days += $year*365 + int($year/4) - int($year/100) + int($year/400);
++$year; if ($mon > 1 && (!($year%400) || (!($year%4) && ($year%100)))) {++$days}
while (--$mon >= 0) {$days += $month[$mon]}
$days += $day-1;
return((($days*24+$hour)*60+$min)*60+$sec);
}
303nobodyさん:04/09/09 22:12 ID:???
>>302
ばぐハケーン!!
304nobodyさん:04/09/09 22:13 ID:???
>>302
うんうん、見ただけで使いたとは思わなくなる。
305nobodyさん:04/09/09 22:16 ID:???
コード読む気にもナラネ
306nobodyさん:04/09/09 23:32 ID:???
307nobodyさん:04/09/09 23:39 ID:???
>>302=>>306
煽られたからってそう怒らないでね
308弱杉:04/09/10 03:32 ID:+ZeQb9+r
(ここへの書き込みとしてふさわしいかは分らないのですが...)
perl (ver.5.00503)で、特定デレクトリを丸ごと圧縮(zipかlzhが希望)する必要が在り調べたのですが、
Archive::zipというモジュールが必要らしいと分りました。
しかし、このスクリプトの置き場所はレンタルサーバ(ア_ル)で、モジュールの追加インストールが出来ません。
zipもしくはlzh圧縮が可能なライブラリって無いでしょうか?
ご存知の方がいらっしゃったら教えていただけると大変、大変助かります。
どうぞよろしくお願いします。
(この質問はモジュール板の方が適切なのでしょうか? それさえも分らんのデス...)
309nobodyさん:04/09/10 04:27 ID:???
Archive::zipはデフォルトでperlに入っているようだが。
310弱杉:04/09/10 04:49 ID:+ZeQb9+r
鯖内のモジュールの検索したんですが見当たりませんでした。。。
ア_ルから、ちょっと前にもらったモジュール一覧にも入ってなかったでんす。
私の勘違いでしょうか。。。
311nobodyさん:04/09/10 05:24 ID:???
>>309
ActivePerl Build 810 (5.8.4 相当) なら入っているが、Build 522
(5.005_03 相当) には入っていないし、(素の) Perl ではどのヴァージョン
でも入っていない。ActivePerl 系でも lib/ の方ではなく site/lib/ の
方に入っているから標準モジュールでないと分かる。
http://perl.infoware.ne.jp/documents.html

>>310
Archive::Zip 自体は Pure Perl なモジュールだからコピーすればいいが、
中で非標準モジュール且つ要コンパイルの Compress::Zlib を使っている。
サーバに用意されていなければこれを Compress::Zlib::Perl に置き換え、
必要なモジュール一式を任意のディレクトリに置いて使えばいい。

もしくは、サーバに zip や lha がインストールされているなら system() で
呼ぶ方が楽だろう。
http://perldoc.com/perl5.8.4/pod/func/system.html
312299 :04/09/10 11:56 ID:???
>>300-302
最初のリンク参考になりました。
自分にはまだ難しすぎるようです・・・
他の方法を考えます。
ありがとうございました。
313nobodyさん:04/09/10 12:07 ID:???
>>312
数字(秒数)のまま扱うってこともあり。
2chのスレNoみたいに。
314nobodyさん:04/09/10 12:19 ID:???
>>312
>>301が答えを書いてるじゃん
315nobodyさん:04/09/10 13:50 ID:???
>>299
Time::ParseDate使えば一発だよ。

use Time::ParseDate;
print parsedate("2002.09.09 15:00");
316弱杉:04/09/10 19:31:54 ID:+ZeQb9+r
>>311

お返事ありがとうございます&カメレスですんませんです。
Archive::Zipで必要とされているモジュールで、やはりCompress::Zlibのみありませんでした。
そこで、Compress::Zlib::perl ver.0.02 (不安なバージョンですが..)をCPANからDLしました。
でも、解凍するとMakefile.PLとかPerl.pmとかが入っていてそこでお手上げです...(レンタル鯖しかいじった事無い厨なので、Makeとか分らんのです)
Zip.pmとcompress_zip.pm(?) を置いて、Zip.pmからuseの代わりにrequireするだけとか勘違いしてました。
Compress::Zlib::perlはMake(?)しないとライブラリファイルにはならないのでしょうか?

また、鯖内のコマンド検索をしたら、gzipというのがは使えるみたいですが(pathは /usr/bin/gzip)、これは通信時の圧縮専用のものでアーカイブを作るのには使えないのでしょうか?

引き続きご指南いただければ幸いです。宜しくお願いします。
317nobodyさん:04/09/10 20:20:41 ID:???
>>316
http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlmod.html
http://www.linux.or.jp/JM/html/GNU_gzip/man1/gzip.1.html

ちなみに gzip は Windows や Mac で良く使われる ZIP (PKZIP)
とは別形式。圧縮のみを担当し、複数ファイルをまとめる
(アーカイヴ) 機能は無いので、tar と連携させる事が多い。
Perl と関係ないので詳しくは余所で尋ねて。
318弱杉:04/09/10 20:46:34 ID:+ZeQb9+r
>>317
お返事ありがとうございます。gzipに関しては参考URLで理解出来ました。
もう一点の『perlでのzipアーカイブの作成方法』についても
余所で訪ねた方がよろしいでしょうか?(モジュール関連スレとかに行けばよろしいですか?)

いちいちつまらん質問ですみません。。。
319nobodyさん:04/09/11 02:24:58 ID:???
Perlモジュールについて
http://pc5.2ch.net/test/read.cgi/php/997829243/

CGIに依存しないPerlの話題一般/Part2
http://pc5.2ch.net/test/read.cgi/php/1030548610/
320弱杉:04/09/11 02:38:55 ID:cyd1fAb1
>>319

ご指南ありがとうございました。そちらの板にいってきます。
スレ汚し、大変失礼しました。
321nobodyさん:04/09/11 05:03:25 ID:???
失礼します。クッキーを用いて、入力したフォームの情報を一時記憶させようと思っています。
しかし、以下のソースだと何故かクッキーには書き込まれるのにフォームに既入力の状態になりません。
何がおかしいのか見ていただけないでしょうか?一つ目のソースはこれです。

$cookie_id = 'regist';
&get_cookie();
$name = $cookie{ 'name' };

print "<meta http-equiv='Content-Type' content='text/html; charset=Shift_JIS'>\n\n";

print <<"HTML_TAG";

<html><head></head><body>

<Form action="registration.cgi" method="POST">
<table width="600">
<tr><td><input type="text" name="name" size="20" value="$name"><input type="submit" name="regist" value="確認画面"></td></tr>
</table>
</FORM>
</body>
</html>
322nobodyさん:04/09/11 05:03:54 ID:???
HTML_TAG

sub get_cookie {
my( $cookie_name, $value );
foreach ( split( /; /, $ENV{ 'HTTP_COOKIE' } ) ) {
( $cookie_name, $value ) = split( /=/ );
$cookies{ $cookie_name } = $value;
}
foreach ( split( /&/, $cookies{ $cookie_id } ) ) {
( $cookie_name, $value ) = split( /:/ );
$cookie{ &unescape( $cookie_name ) } = &unescape( $value );
}
}

sub unescape {
my( $data ) = @_;
$data =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('C', hex($1) )/ge;
return $data;
}
exit;
323nobodyさん:04/09/11 05:04:18 ID:???
HTML_TAG

sub get_cookie {
my( $cookie_name, $value );
foreach ( split( /; /, $ENV{ 'HTTP_COOKIE' } ) ) {
( $cookie_name, $value ) = split( /=/ );
$cookies{ $cookie_name } = $value;
}
foreach ( split( /&/, $cookies{ $cookie_id } ) ) {
( $cookie_name, $value ) = split( /:/ );
$cookie{ &unescape( $cookie_name ) } = &unescape( $value );
}
}

sub unescape {
my( $data ) = @_;
$data =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('C', hex($1) )/ge;
return $data;
}
exit;
324nobodyさん:04/09/11 05:05:28 ID:???
二つ目のソースはこれです。ここで、クッキーに書き込みはされるのですが、一つ前に戻ると
クッキーには確かに情報が入っているにもかかわらず、テキストボックスには何も表示されません…。

require "./sub_getparam.pl";# データ取得用サブルーチン
require 'jcode.pl';

$cookie_id = 'regist';

read( STDIN, $query, $ENV{ 'CONTENT_LENGTH' } );
&getparam( $query );

$name = $param{ 'name' };
$cookie{ 'name' } = $name;
&set_cookie();

print "<meta http-equiv='Content-Type' content='text/html; charset=Shift_JIS'>\n\n";

print <<"END";

<html><head></head><body>

<p><B><font color="red">内容を確認してください。</font></B></p>

<Form action="registration_complete.cgi" method="POST">
<table><tr><td>名前</td><td>$name</td></tr></table>
<input type="hidden" name="name" value="$name">
</form></BODY></HTML>

END
325nobodyさん:04/09/11 05:06:02 ID:???
sub set_cookie {
my( $new_cookie, $date );

@pairs = ();
foreach( sort keys %cookie ) {
push( @pairs, &escape( $_ ).":".&escape( $cookie{ $_ } ) );
}
$new_cookie = join( '&', @pairs );
$date = &gmt_date( time + 86400 * 120 );
if ( $new_cookie ne $cookies{ $cookie_id } ) {
print "Set-Cookie: $cookie_id=$new_cookie; expires=$date\n";
}
}


sub escape {
my( $data ) = @_;
$data =~ s/(\W)/sprintf( "%%%02X", unpack('C', $1 ) )/ge;
return $data;
}

sub gmt_date {
my( $data ) = @_;
( $sec, $min, $hour, $day, $mon, $year, $wday ) = gmtime( $data );
return sprintf( "%s, %02d %s %04d %02d:%02d:%02d GMT",
( Sun, Mon, Tue, Wed, Thu, Fri, Sat )[ $wday ], $day,
( Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec )[ $mon ],
$year + 1900, $hour, $min, $sec );
}
exit;
326nobodyさん:04/09/11 05:07:00 ID:???
sub set_cookie {
my( $new_cookie, $date );

@pairs = ();
foreach( sort keys %cookie ) {
push( @pairs, &escape( $_ ).":".&escape( $cookie{ $_ } ) );
}
$new_cookie = join( '&', @pairs );
$date = &gmt_date( time + 86400 * 120 );
if ( $new_cookie ne $cookies{ $cookie_id } ) {
print "Set-Cookie: $cookie_id=$new_cookie; expires=$date\n";
}
}


sub escape {
my( $data ) = @_;
$data =~ s/(\W)/sprintf( "%%%02X", unpack('C', $1 ) )/ge;
return $data;
}

sub gmt_date {
my( $data ) = @_;
( $sec, $min, $hour, $day, $mon, $year, $wday ) = gmtime( $data );
return sprintf( "%s, %02d %s %04d %02d:%02d:%02d GMT",
( Sun, Mon, Tue, Wed, Thu, Fri, Sat )[ $wday ], $day,
( Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec )[ $mon ],
$year + 1900, $hour, $min, $sec );
}
exit;
327nobodyさん:04/09/11 05:10:00 ID:???
>>321
長杉。
328nobodyさん:04/09/11 05:24:21 ID:???
age
329nobodyさん:04/09/11 05:45:52 ID:???
え〜と、、、
ソースを見ずにレス。
(´-`).。oO(見る気がおきねーよ)

「一つ前に戻ると」と書いてある。
つまりキャッシュされたページを見てると…
330nobodyさん:04/09/11 09:03:38 ID:???
(;゚Д゚)
331nobodyさん:04/09/11 09:30:58 ID:???
くっきー発酵と同一セッションで読み込んでんじゃねーの?
ソースみてないから推測だが
332nobodyさん:04/09/11 10:37:18 ID:???
CGI.pm使って書き直してダメならもう一回来い
333nobodyさん:04/09/11 11:28:31 ID:???
本当にクッキー読み込めているのか?
値を取り出して表示させるとか切り分けしてみ。

読む気にならんからこんなとこだな。
334nobodyさん:04/09/11 19:54:24 ID:3nx87n19
Perlのバージョンは4.0.1.8です。バージョンが古い為なのか、
以下の様なsprintfを含んだスクリプトが使用できずエラーと
なってしまいます。どなたか、Perlの環境は変えずに、代わり
となるスクリプトがあれば教えて頂けませんか?

&SUB(sprintf "%02", $a - 1);

sub SUB{
  my $value = shift @_;
  system "$SHELL_COMMAND $value";
}
335nobodyさん:04/09/11 19:58:22 ID:3nx87n19
>>334です。

すいません。スクリプトが間違えていました。

&SUB(sprintf "%02d", $a - 1);

sub SUB{
  my $value = shift @_;
  system "$SHELL_COMMAND $value";
}

336nobodyさん:04/09/11 20:06:17 ID:???
( )
337nobodyさん:04/09/11 20:41:24 ID:3nx87n19
>>334です。

何度もすいません。335のコメントが紛らわしかったので
再度書き込みました。
335で書いたスクリプトが正しいのですが、それでもエラーと
なっていますので、どなたか、代替のスクリプトがありましたら
教えて下さい。宜しくお願いします。
338nobodyさん:04/09/11 20:45:06 ID:???
my
339nobodyさん:04/09/11 21:00:41 ID:???
>>334はマルチポストだってよ
340nobodyさん:04/09/11 22:07:01 ID:???
あっさり解決か
341nobodyさん:04/09/11 23:10:45 ID:???
>337
>>336
342334:04/09/11 23:32:18 ID:3nx87n19
>>336,338
レスありがとうございました。
本日確認出来ない為、後日試してみます。
343nobodyさん:04/09/12 15:18:14 ID:???
>>342
死んでくれないか?
344nobodyさん:04/09/12 15:22:58 ID:???
>>343
お前がな
345nobodyさん:04/09/12 15:42:52 ID:???
>>344
お前もな
346nobodyさん:04/09/12 15:57:45 ID:???
>>345=>>343
必至だなw
347nobodyさん:04/09/12 16:17:53 ID:???
自演と言い始めるやつが自演
348nobodyさん:04/09/12 16:29:06 ID:???
349nobodyさん:04/09/12 18:00:56 ID:???
350nobodyさん:04/09/12 18:47:25 ID:???
まじめに答えてくれる人に申し訳ないんでもうやめないか?
351nobodyさん:04/09/12 18:51:08 ID:???
調子に乗って暴言吐いたのはマジですまんかった
352nobodyさん:04/09/12 22:28:31 ID:???
お前毎回すまんかっただろ
誤ればなんでもどうにかなると思ってるのか?
353nobodyさん:04/09/12 23:56:57 ID:???
>>334はマルチポスト
354nobodyさん:04/09/13 01:06:09 ID:???
掲示板を作っていまして、書き込みdataファイルに体裁用のhtmlタグも入れて、ブラウザから読み出すだけにしたいのですが、
新しいものを上に書くには、書き込み時に、まずファイルの内容を変数にいれ、その書き込みの内容をファイルに上書きした後追加でそれ以前のを書くしか方法はないですか?

あと、こちらはブラウザから直読みじゃないのですが、ファイルの上から何行を読む、正規表現でマッチしたところだけを読むにはどうすればよいのでしょうか?

よろしくお願いしますm(_ _)m
355nobodyさん:04/09/13 06:06:04 ID:???
-
↑のハイフンってハッシュのキーに使えますか?頭文字にはできないのは知ってますが、
2文字目以降にも使えないんですか?
356nobodyさん:04/09/13 06:17:06 ID:???
>>354
考え方は一緒だが
open LOCK, '>' . $lock_file or die $!;
flock LOCK, 2;
open LOG, '<' . $log_file or die $!;
open TEMP, '>' . $tmp_file or die $!;
print TEMP $new_article;
print TEMP <LOG>;
close TEMP;
close LOG;
rename $tmp_file => $log_file or die $!;
close LOCK;

>>355
my %hash = ('-' => 'foo', -a => 'bar', '-a-' => 'baz');
print @hash{'-', '-a', '-a-'};
357355:04/09/13 07:34:16 ID:???
>>356
あれ?使えた・・・・;
-が初めか最後の時にはクォートしなきゃいけなかったのか;
それが面倒であまり使われてないんですかね?それとも他にも何かの処理中に面倒なことが
起こる可能性があったりするんですか?
358355:04/09/13 07:36:22 ID:???
a-aもクォートがいるのか・・・・orz
359nobodyさん:04/09/13 07:52:35 ID:???
クォートがいるのではなくクォートがなくても動くと言った方が正しいと思うが。
360nobodyさん:04/09/13 08:09:58 ID:???
なんでクォートごときでそんなにへこむんだよ。
文字列をクォートするのはどんな言語でも当たり前のことだろうに。
361355:04/09/13 09:29:42 ID:???
>>359

%form = ( a-a => 1 );
エラーになる。use strict環境下だからかもしれないけど。
>>360
通販サイトのCGIだから商品名、商品価格とか色々商品番号をキーとしたハッシュを作る時に
いちいちクォートを入れてると見づらいし、書きづらいorz
ハイフンなしでもいいがCSV形式に変換して落とす時にいちいちハイフンを追加するのもちょっと億劫orz

Perlって結構自由?ゆるい?からマルチバイトかメタ文字以外でクォートすることはないんだorz
だって面倒でしょ。JAVA畑の人は慣れてるかもしれないけどさ。
362355:04/09/13 09:30:13 ID:???
my %form = ( a-a => 1 );
の間違いね。
363nobodyさん:04/09/13 09:33:33 ID:aK+3swHZ
Perl5.8.5をソースからインストールしようとしたとき、
「あなたのメアドは?」って聞かれたのですが、
これって何に使うのでしょうか?
364nobodyさん:04/09/13 09:40:05 ID:???
>>363
請求書を送るために
365nobodyさん:04/09/13 09:42:28 ID:???
>>363
>>364が言うように請求書が来るが、先払いも可能だよ。クレジット決済でやるのがまあ普通だね。
昔俺はメアドだけなら払わずに無視してもどこの誰だかわからないだろうと思っていたが、
IP+メアドで実は十分個人を特定できるようだ。(もちろん裁判所に申請して住所などの情報を調べる許可を得るみたいだが。)
366nobodyさん:04/09/13 09:49:56 ID:???
>>365
たかが86.00$なんだから素直に払えよボケ。
367nobodyさん:04/09/13 09:57:23 ID:???
>>361
細かいことを気にしないなら

my %form = qw{
a-a 1
b-b 2
};

とか。

368nobodyさん:04/09/13 10:01:53 ID:???
>>363
バグレポートを送ったりそのバイナリをビルドしたPerl管理者に連絡を取りたかったりした時とか。
Perlが勝手にそのアドレスを使うことはない。(アプリが勝手に使うことはあるかもしれないが)
気になるなら[email protected]にでもしておけ。

>>364-366 悪質な冗談はやめとけ
369nobodyさん:04/09/13 11:45:33 ID:???
データから、カンマを取り除いた数値のみを切り出したいんですけど

if ($key eq 'log'){
$val =~ s/\,//;
if ($val =~ m/[0-9,]{1,10}/){
$number = $val;
}
}

ではうまくいきません。どの辺がおかしいかご教授願います。
370nobodyさん:04/09/13 11:48:54 ID:???
>>369
$val =~ s/\,//;
にgオプションつけるとか?
371nobodyさん:04/09/13 12:28:08 ID:???
ダメです カンマの前しか取得されません・・・
372nobodyさん:04/09/13 13:00:27 ID:???
元のデータは123245,6789,4567,みたいなの?
そこから123245と6789と4567を別々に取り出したいの?
それとも12324567894567て続けて?
373nobodyさん:04/09/13 13:01:37 ID:???
こんな感じか?

my $val = "datadata1,234,567datadata....,456,789";
my @tmp = $val =~ /(\d{1,3}(?:,\d{3})*)/g;
foreach (@tmp){
$_ =~ s/,//g;
print "$_\n";
}
374nobodyさん:04/09/13 13:02:42 ID:???
XXXX:1234,5677 みたいな形で
12345677 てカンマだけを抜かした形で取得したいす
375nobodyさん:04/09/13 13:06:15 ID:???
じゃあね。
>>370の言うとおり。
if ($key eq 'log'){
$val =~ s/,//g;
$number = $val;
}
376nobodyさん:04/09/13 13:06:27 ID:???
>>368
>>364-366 悪質な冗談はやめとけ
^^
377nobodyさん:04/09/13 13:20:51 ID:???
>>363-366>>368
スレ違い
378nobodyさん:04/09/13 13:53:22 ID:???
意見のすれ違いがおおいね・・・。
379nobodyさん:04/09/13 14:45:23 ID:Dm3Qguqc
$a
が数値かどうかを判定するいい方法Plz。
380nobodyさん:04/09/13 14:48:19 ID:???
$a =~ /^\d+$/
381379:04/09/13 14:56:19 ID:Dm3Qguqc
>380
その意味を理解するのに手間取ってしまいました。
if($a =~ /^\d+$/){
#数値
}
ですね、ありがとうございました。
382nobodyさん:04/09/13 15:04:53 ID:???
>>380-381
$aが負の場合にうまくいかんと思うが。
383nobodyさん:04/09/13 15:07:36 ID:???
>>380-381
$aが小数点ついてる場合にうまくいかんと思うが。
384nobodyさん:04/09/13 15:18:42 ID:???
>>382-383
うまくいく例を教えたれや
385nobodyさん:04/09/13 15:23:13 ID:???
>>384
それが分かったらワテも苦労せん
386nobodyさん:04/09/13 15:43:56 ID:???
387nobodyさん:04/09/13 16:22:04 ID:???
my @vals = qw/5.88 -50 300 s51 51s/;

foreach (@vals){
if($_ eq $_-0){
print "$_ = Number\n";
}
}

どう?
388nobodyさん:04/09/13 16:42:01 ID:???
警告を気にしない場合にはいいんじゃないの?
389nobodyさん:04/09/13 16:46:28 ID:???
>>388
警告でます?
390nobodyさん:04/09/13 16:51:18 ID:???
>>361
bare word として許されるのは [A-Za-z]\w* にマッチする文字列のみ。
これに加え単項演算子としての - を bare word の頭に付ける事ができる。

<q cite="http://perldoc.com/perl5.8.4/pod/perlop.html#Symbolic-Unary-Operators">
Otherwise, if the string starts with a plus or minus,
a string starting with the opposite sign is returned.
One effect of these rules is that -bareword is equivalent
to "-bareword".
</q>

=> 演算子は左辺の (- が頭に付くものも含めた) *bare word を*
クォートしてくれるが、何でもかんでも文字列リテラルにしてくれる
わけではない。
391nobodyさん:04/09/13 17:02:59 ID:???
>>388
use warningsすると出る。

Argument "s51" isn't numeric in subtraction (-) at numberp.pl line 6.
Argument "51s" isn't numeric in subtraction (-) at numberp.pl line 6.
392nobodyさん:04/09/13 17:06:02 ID:???
>>390 =~ s/\[A-Za-z\]/[A-Z_a-z]/;
393nobodyさん:04/09/13 17:34:07 ID:nbuBgplM
ショッピングカートで現在のカゴの中身を表示するのに、
クッキーやファイルを使わないでする方法は無いですか?
394nobodyさん:04/09/13 17:49:54 ID:???
395nobodyさん:04/09/13 17:54:31 ID:???
>>393
コーディングと関係ないじゃんかよ
396nobodyさん:04/09/13 19:55:34 ID:???
m/^[-+]?\d+(.\d+)?$/
397nobodyさん:04/09/13 20:01:22 ID:UGDBY8bj
訂正
m/^[-+]?\d+(\.\d+)?$/
398nobodyさん:04/09/13 20:17:50 ID:???
n進数や指数付きの数値はどうすんのよ?
399nobodyさん:04/09/13 21:08:13 ID:ZFdPbvGg
外部からのdatファイルを読み込むサブルーチンが働きません。
何十回も関数リファレンスや講座サイトを見比べても、どこが悪いのかがわかりません。
ちなみに、下記のコードの結果、$cs_xの値が-1になりました。$st_ffで出るパスは正しいです。
もしよろしければ教えて頂きたいなと思います。

sub st{
    open(IN,"$st_ff") || &error("stファイルが見つかりません"); # $st_ff はstファイルの位置(相対パス)
    @st_d = <IN>;
    close(IN);
    $i=0;
    foreach (@st_d){
        ($name,$c_no,$hp,$lov,$his,$age) = split(/<>/);
        $c_status[$i] = [$name,$c_no,$hp,$lov,$his,$age];
        $i++;
    }
    $i--;
    $cs_x = $i; # $cs_xは元データ(st)の行数を出す・チェック用
}
400nobodyさん:04/09/13 21:13:27 ID:???
数値のマッチングも満足にできないおまいらって・・・・・カコイイね。
401nobodyさん:04/09/13 21:17:01 ID:???
>>399
-1になってるならforeachが一度も処理されてないってことだろ。
foreach前に
print @st_d;
でも加えて確認してみ?
402nobodyさん:04/09/13 21:39:15 ID:???
>>401
考えてみたらそうですね。
エラーメッセージが出ないので大丈夫と先入観を持ってました。(ちなみに、ファイル名を変えて、エラーが出るのは確認しました。)
ちなみに@st_dは無表示なので、1〜3行内に間違いがありそうです。
レベル低すぎる質問って自覚したので精進して出直して、ここにお世話にならないように頑張ります。
失礼しました。
403nobodyさん:04/09/13 21:47:46 ID:???
>>402
俺の環境では動いたぞ
全然問題無い
しいて言うならchompしとけってくらいかな
404nobodyさん:04/09/13 21:51:51 ID:???
$c_status[$i] = [$name,$c_no,$hp,$lov,$his,$age];

本当にわかっていてこうしているのか甚だ疑問なんだが
405nobodyさん:04/09/13 21:57:42 ID:???
>>399
いちいち$iとか使わないで、

push @c_status, ほげほげ

とやる方がらくちんだよ。最後の$cs_xも、@c_statusの
大きさで読み込んだ行数わかるから冗長。

406nobodyさん:04/09/13 21:58:08 ID:???
えっと、テストするファイルを間違えたみたいでした。
改変前のコピーを取っておいたフォルダで試してました。
本気で申し訳ありません。

>>404
それは後のサブルーチンで、$c_status[$i][$j]みたいなかんじで使おうと思って。
何か他にいい方法があれば教えていただけますか?
407nobodyさん:04/09/14 03:26:57 ID:???
>>406
オブジェクト指向
408nobodyさん:04/09/14 05:51:54 ID:???
日本語文の中から最頻出単語を選ぶにはどうしたら良いのでしょうか。
英文と違ってスペースで区切られていないので、どこからどこまでが
単語か判断できないのですが…
409学生のときは語学屋でした:04/09/14 06:17:42 ID:???
>>408
「あの犬ちゃうちゃうちゃう?」
「ちゃうちゃうちゃう、ちゃうちゃうちゃう!」
「えー、ちゃうちゃうちゃう?ちゃうちゃうちゃうん?」
「ちゃうちゃうちゃうんって、ちゃうちゃうちゃうんとちゃうん?」
「ちゃうちゃうちゃうんとちゃうんって、ちゃうちゃうちゃうんな?」

分節してみてください。
人間が「どう分節するか」を定義できなければ、プログラムは分節できませんよ。

便利なモジュール等があるかどうかはともかくとして。
410nobodyさん:04/09/14 06:20:04 ID:???
>>408
ググってすぐ出たのはこのあたり。
ttp://kakasi.namazu.org/
ttp://chasen.naist.jp/hiki/ChaSen/

もしくは...「漢字を含む2文字以上」の全てのパターンを網羅するとか。
ハッシュだとファイルサイズの十数倍食いそう。
411nobodyさん:04/09/14 06:58:37 ID:???
ちゃうちゃうちゃうちゃうちゃう・・・?_?
412nobodyさん:04/09/14 07:04:12 ID:???
>>408
ぱんつくったよ

分節してみてください。
413nobodyさん:04/09/14 15:39:19 ID:NAYEHf5j
初級質問失礼します
test.cgiというCGIで、?mode=viewの時viewのサブルーチンに
切り替えたいのですが、リンクを押してもindexの部分が表示されます
---
$mode = $in{'mode'};
if ($mode eq "view") { &view; }
&index;
sub index {
print "<a href=\"test.cgi?mode=view\">テスト</a>\n";
}
sub view {
print "this is a view\n";
}
---
すいませんがお願いします
414nobodyさん:04/09/14 15:40:56 ID:???
>>413
当たり前だ
よく見てみろ
415nobodyさん:04/09/14 15:48:22 ID:???
>>413
exitするかmodeに何もなかったらindexと設定
416413 :04/09/14 15:57:35 ID:NAYEHf5j
>>415
elseif ($mode eq "") { &index; }
としても、サブルーチンの最後にexit;つけても駄目でした。
前者ではindexも表示されなくなってしまいました。
417nobodyさん:04/09/14 16:02:26 ID:???
釣りお疲れさん
418nobodyさん:04/09/14 16:07:03 ID:???
>>416
当たり前だ
よく見てみろ
419413:04/09/14 16:09:01 ID:NAYEHf5j
>>418
見ればいい場所を教えてください
420nobodyさん:04/09/14 16:24:05 ID:???
>>419
indexだけで「Content-Type:」〜「</HTML>」までprintしてるんでしょ?
ヘッダーとかを別のサブルーチンにしてないならindex内で分岐しなきゃ。
421nobodyさん:04/09/14 16:30:19 ID:???
elseif
422413:04/09/14 16:45:28 ID:NAYEHf5j
>>420
すいませんindex内で分岐の意味が・・・。
sub index {
$mode = $in{'mode'};
if ($mode eq "view") { &view; }
print "<a href=\"test.cgi?mode=view\">テスト</a>\n";
}
こういうことじゃないですよね?動きません(TT)
CGIは
#!/usr/bin/perl
print "Content-Type: text/html\n\n";
print "<html><body>\n";

print "</body></html>\n";
です。<html></html>タグの行はさっき付け足しました。
423413 :04/09/14 16:46:11 ID:???
>>421
elsifでした。でも動かず・・・
424nobodyさん:04/09/14 17:12:57 ID:???
$mode = $in{'mode'};
if ($mode eq "view") { &view; }
&index;
sub index {
print "<a href=\"test.cgi?mode=view\">テスト</a>\n";
}
sub view {
print "this is a view\n";
exit; #←★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
}
425nobodyさん:04/09/14 17:14:37 ID:???
釣りじゃなかったの?こうしたら?

#!/usr/bin/perl
require 'cgi-lib.pl';
$mode = $in{'mode'};
if ($mode eq "view") { &view; }
elsif ($mode eq "") { &index; }
sub index {
print "Content-Type: text/html\n\n"; #次に一行開けなけりゃだめ

print "<html><body>\n";
print "<a href=\"test.cgi?mode=view\">テスト</a>\n";
print "</body></html>\n";
}
sub view {
print "Content-Type: text/html\n\n"; #次に一行開けなけりゃだめ

print "<html><body>\n";
print "this is a view\n";
print "</body></html>\n";
}
426nobodyさん:04/09/14 17:21:46 ID:???
おい、どうなんだ?
最初、elsifがないからいつもindexが実行されてた。
次に、だめだったのは、content-type出力しなかったから。
というお粗松くんじゃないのか?
427nobodyさん:04/09/14 17:35:55 ID:???
>#次に一行開けなけりゃだめ
なんだりゃ・・・
428413:04/09/14 17:36:16 ID:NAYEHf5j
>>424
>>425
いずれも駄目なのですが・・・(TT)なぜでしょう!?
後者は
require 'cgi-lib.pl';
の行は削除してコピペしました(エラーが・・)
429nobodyさん:04/09/14 17:40:57 ID:???
>>425
紛らわしいので念のため言っておくと
>print "Content-Type: text/html\n\n"; #次に一行開けなけりゃだめ
># ここに空行を作るんじゃなくて  ~~改行2個で空行ができてる

>>428
ちょっと確認
クエリ無ければindexを表示するのはわかったけど、
mode=viewならindex+"this is a view"?
それとも"this is a view"だけ表示?
430nobodyさん:04/09/14 17:43:53 ID:???
>>428
ちょっと確認
mode=hogeなら?
431nobodyさん:04/09/14 17:54:55 ID:???
>print "Content-Type: text/html\n\n"; #次に一行開けなけりゃだめ

ワロタ
432nobodyさん:04/09/14 17:58:23 ID:???
ソース全体晒せやヴォケ
433nobodyさん:04/09/14 17:59:19 ID:???
>>430
「次に一行開けなけりゃだめ」と出力されます
434413:04/09/14 18:03:13 ID:NAYEHf5j
>>429
>mode=viewならindex+"this is a view"?
>それとも"this is a view"だけ表示?

this is a viewだけ表示です。
ページを切り替えるような感じで。
435413:04/09/14 18:11:36 ID:???
>>432
いくつもやりましたがとりあえず駄目その1です(test.cgi)

#!/usr/bin/perl
$mode = $in{'mode'};
if ($mode eq "view") { &view; }
elsif ($mode eq "") { &index; }
sub index {
print "Content-Type: text/html\n\n"; #次に一行開けなけりゃだめ

print "<html><body>\n";
print "<a href=\"test.cgi?mode=view\">テスト</a>\n";
print "</body></html>\n";
}
sub view {
print "Content-Type: text/html\n\n"; #次に一行開けなけりゃだめ

print "<html><body>\n";
print "this is a view\n";
print "</body></html>\n";
}
436nobodyさん:04/09/14 18:14:25 ID:???
$inはどこの世界からやってきたのでしょう(メルヘン
437nobodyさん:04/09/14 18:14:42 ID:???
Content-typeはPerlのパスの下に書いたら?2回書くのマンドクセ
438nobodyさん:04/09/14 18:16:32 ID:???
>>436
コリン星からやってきたのです
439nobodyさん:04/09/14 18:16:42 ID:???
>>435
フォームデコードは?
440nobodyさん:04/09/14 18:18:27 ID:???
#!/usr/bin/perl
$|=1;
print "Content-Type: text/html\n\n";
require 'cgi-lib.pl';
&ReadParse(\%in);
if($in{'mode'} eq 'view'){ &view();}
&index();
sub index {
print "<html><body>\n";
print "<a href=\"test.cgi?mode=view\">テスト</a>\n";
print "</body></html>\n";
}
sub view {
print "<html><body>\n";
print "this is a view\n";
print "</body></html>\n";
exit(0);
}
exit(0);
441413:04/09/14 18:36:18 ID:NAYEHf5j
>>440
エラーが出ます。

require 'cgi-lib.pl';
&ReadParse(\%in);

これをコメントアウトするとエラーは出ませんが、動作変わりません。
cgi-lib.plの記述は必要なのでしょうか?
参考にしてるフリーCGIではどれも使われて無いので・・・
なんか長くなってすいません。
442nobodyさん:04/09/14 18:45:09 ID:???
>>441
その2行で?mode=viewというクエリを変数に格納している。
PHPだといきなり変数に入ってるから惜しいと言えば惜しいのかも。
「クエリ GET POST」あたりでググって勉強したほうがいい。

#! /usr/bin/perl
print "Content-Type: text/html\n\n<HTML><BODY>";
if($ENV{'QUERY_STRING'} eq "view"){
print "this is a view";
}else{
print "<A href=\"test.cgi?view\">view</A>";
}
print "</BODY></HTML>";
443nobodyさん:04/09/14 18:45:30 ID:???
つーか、お前はcgi-lib.plって何か知ってるか?
知らなかったらぐぐれ
444nobodyさん:04/09/14 18:46:14 ID:???
PHPは
$_GETとかに勝手に入ってくれるけど、perlは自分でしないとだめだよ

require "./cgi-lib.pl";

&ReadParse(*in);
$hoge = "$in{'hoge'}";
445440:04/09/14 18:46:39 ID:???
446440:04/09/14 18:48:42 ID:???
#!/usr/bin/perl
$|=1;
print "Content-Type: text/html\n\n";
($dust, $in{'mode'}) = split(/=/, $ENV{'QUERY_STRING'}, 2);
if($in{'mode'} eq 'view'){ &view();}
&index();
sub index {
print "<html><body>\n";
print "<a href=\"test.cgi?mode=view\">テスト</a>\n";
print "</body></html>\n";
}
sub view {
print "<html><body>\n";
print "this is a view\n";
print "</body></html>\n";
exit(0);
}
exit(0);
447413:04/09/14 19:02:05 ID:NAYEHf5j
>>442-446
442, 446で出来ました・・・!!
仰る通りクエリというのが解ってませんでした。
説明とリンクありがとうございました。
勉強します。
お手数おかけしました。><
448nobodyさん:04/09/14 19:39:03 ID:???
>>447
cgi-lib.plにパスが通ってなかっただけだろ。
449nobodyさん:04/09/14 19:43:21 ID:???
cgi-lib.plすら入れてなかったりして
450nobodyさん:04/09/14 19:45:48 ID:???
今の時代にcgi-lib.plかよ
451nobodyさん:04/09/14 19:49:06 ID:???
CGIもぢゅるとかダサい
452nobodyさん:04/09/14 20:13:40 ID:???
クエリも理解してないお子様にはcgi-lib.plがお似合いだ
453nobodyさん:04/09/14 20:14:58 ID:???
理解してなかったらもじゅる使わない方がいいと思うのだけども
454nobodyさん:04/09/14 20:25:49 ID:???
>>452
理解して使ってる俺はお子様ですかそうですか。
455nobodyさん:04/09/14 20:39:44 ID:???
mainルーチンで decode() とかやってる方がまぬけ
456nobodyさん:04/09/14 20:56:40 ID:???
まぬけのinルーチン
457nobodyさん:04/09/14 21:53:20 ID:IqNnzcu2
CGIでアクセス制限するサイトを作っていますが、
認証後のページを表示している段階では〜〜.cgiと表示されているのですが、
ページからリンクへ飛ぶとIDとPASSがURLに表示されてしまいます。
なんとかIDとPASSを表示させないような方法はないのでしょうか?


検索すると表示されないようにするにはセッション管理の方法がある
という事で調べています。
perlでセッション管理するには
ttp://www.atmarkit.co.jp/fsecurity/rensai/webhole03/webhole01.html
を見たところ
#!/usr/bin/perl
require 5.004;
use Digest::MD5 'md5_hex';
print md5_hex rAnd;

を加えればいいようなのですが、上手くいきません。
なかなか目的のページも見つからず途方にくれています。

どなたかご教授お願いします。
458nobodyさん:04/09/14 21:56:26 ID:???
post
459nobodyさん:04/09/14 22:03:09 ID:???
>>457
よく読め、そのページのどこにそれを加えれば
セッション管理ができるって書いてあるんだ?

ただ単に表示されないようにしたいだけなら>>458
460nobodyさん:04/09/14 22:12:08 ID:???
cookieとかcookieとかcookie
461nobodyさん:04/09/14 22:20:56 ID:???
@list = ('a','i','u','e','o');
foreach $a(@list){
print "$_ = $a\n";
}
上のように書いて期待する結果が
0 = a
1 = i...なんですが、、、
現在、何個目かという情報はどこかに入ってないんでしょうか。
いちいちカウントしてやらないとダメですか?
462457:04/09/14 22:32:38 ID:IqNnzcu2
>>459

POSTってform形式でしか使えないですよね?
認証後のページでは確かにPOST使うと表示されないのですが、
認証後のページの中のリンクをクリックすると表示されてしまうのです。

リンクはたくさんあるのですが全てフォームボタン等作成するという事なのでしょうか?
463nobodyさん:04/09/14 22:43:33 ID:???
>>461
for使えばええやん

>>462
cookieにセッションIDを仕込む
464457:04/09/14 22:51:13 ID:IqNnzcu2
>>463

ありがとうございます。
やはりcookieとセッションIDなんですね。
セッションIDとかcookieという言葉自体は調べたので
理解は出来ているんですが、

具体的な方法がなかなか検索しても見つからないもので・・・
perlを使うんですよね・・・うーん、難しい
465nobodyさん:04/09/14 23:01:28 ID:???
>>463
ありがとうございます。
foreachでないとちと面倒なので、なんとかしてみます...
466nobodyさん:04/09/14 23:03:08 ID:???
>>464
ただIDをクッキーにくわせてそれ見るだけでそ

>>465
$iつけるだけなのにそんなに面倒かね
467nobodyさん:04/09/14 23:06:38 ID:???
my $i = 0;
foeach (@list) {
print $i++." = $_";
}
468nobodyさん:04/09/14 23:09:02 ID:???
forつかって無駄に$iを使わなくてもいぃような。
printf qq|%d = %s\n|, $a, $list[$a] foreach my $a (0..$#list);
469nobodyさん:04/09/14 23:54:32 ID:???
無駄に$a使わなくてもいぃような。
470nobodyさん:04/09/15 02:14:30 ID:???
>>464
CGI::Sessionとか使えばあんたみたいなアフォでも
セッション管理できると思うよ
471nobodyさん:04/09/15 03:23:11 ID:???
>>468
foreach 修飾子はループ変数名に $_ 以外を使えない上、
その語順では my $a より前に $a が出てくるので文法エラー。
恥掻かずに済むよう、動作確認してから書こうよ。
472nobodyさん:04/09/15 03:52:08 ID:???
>>468
初期化的な意味合いの0を行の先頭(あるいは上)ではなくて、
尻にもってこようとする上に変数の宣言部分が使用部分より
後にあるとは。。。

こういうやつが書くプログラムは300行程度で、もう意味不明。
Perlがそう書けるという悪い部分を勧めるべきではない。
473nobodyさん:04/09/15 04:46:19 ID:???
>>472
sort,grep,mapつかってりゃざらやん。
@ayaya = sort{ }
       grep { }
        map{ } @ayaya;

こんなふうに書くと見やすくていいぞ。

print <<EOF if( ... );
うんこ
うんこ
EOF

儂は1万行超えるソースかいてるが
見にくいってのはグローバル変数を別モジュールで使いまわされて、
変数が何処からきてるんか解らんような描き方するやつのほうが困るな。

無論パッケージもooもされとらんようなやつ。


取敢えず読み慣れてないんなら慣れるしかなかんべ。
アルゴリズムがおかしいんならそこ突っ込むべき。
474nobodyさん:04/09/15 04:53:16 ID:???
print "$_ = $list[$_]\n" foreach (0..$#list);
475nobodyさん:04/09/15 05:05:59 ID:???
初心者スレだし

for (0..$#list){
print "$_ = $list[$_]\n";
}

でいいんじゃない?
476nobodyさん:04/09/15 06:31:42 ID:???
>>473
東北の人ここにもイタ━━(゚∀゚)━━!!
477457:04/09/15 12:29:12 ID:OFkP/WKY
現在perl/cgi入門書は一冊読み終えてる段階です。
スレ違いかも知れませんが、CGI::Sessionを勉強したいのですが、
いくら検索しても簡単な解説でどこで入手出来るか解らないサイトしかなく、
具体的に丁寧に解説してある書籍・サイトとかありますか?


CGI session perl クエリ 等で検索してもなかなか見つからなく、
Amazonで検索してもCGI Session だとヒットしないので・・・。

なんとか下記のサイトを見つけましたがCGIセッションに関する記述が少なくて・・・
ttp://digit.que.ne.jp/work/index.cgi?Perl%A5%E2%A5%B8%A5%E5%A1%BC%A5%EB%2FWalrus%3A%3ASession%3A%3ALite

ただ単純にURLのクエリ文字列?にIDやパスワードが表示されないようにしたいだけなのですが、、難しいもんですね
ページ上のリンク(かなりありますが)を全てフォームボタンでPOSTで送信するように作成した方がいいのでしょうか?
478nobodyさん:04/09/15 12:59:29 ID:???
>>450
>今の時代にcgi-lib.plかよ
CGI.pmの方が処理が重い。utf8,16なんぞも入ってるからな。
cgi-lib.plで済むところでは、あえてCGI.pmを避けるのがプロ。
479nobodyさん:04/09/15 13:05:06 ID:???
>>462
kent-webのcosmoでも参考にし(使っ)たら。
480nobodyさん:04/09/15 13:08:39 ID:???
>>477
CGI::Session説明してるサイトが見つからないだと?
試しにCGI::Sessionでググったらトップにきましたが。
それ見てわからないんだったら入門書見直した方がいい。
481457:04/09/15 13:25:08 ID:OFkP/WKY
>>480
そういうページは既に見ました。
どういう仕組みかは書いてありますが、
具体的にどこで入手したりとかそういった方法も解らなくて、
perl/cgi入門書にも載ってなくて、CGIセッションの本があるなら是非買いたいのですが、
Amazonで検索しても見つからないので途方に暮れているのです。

気に障ったようですいません。
482nobodyさん:04/09/15 13:33:59 ID:???
>>481
乾杯
483457:04/09/15 13:36:33 ID:OFkP/WKY
>>479

そのソフトも試してみましたが、
やはり認証後ページからリンクをクリックするとIDとPASSがURLに追加され
表示されてしまいます。


段々、スレ違いになってきているようなので退散します。
すいませんでした
484nobodyさん:04/09/15 13:51:16 ID:???
485nobodyさん:04/09/15 13:53:46 ID:???
具体的な方法ってただコピペしたいだけちゃうんかと
486nobodyさん:04/09/15 14:47:11 ID:???
>>478
それでも普通CGI::Liteつかうべ、
Perl4しか使えない環境ならともかく
487nobodyさん:04/09/15 14:48:05 ID:???
>>486
CGI::Minimalもあるよ
488※ ◆r7Y88Tobf2 :04/09/15 15:54:43 ID:???
どうしてもログの頭に半角スペースが入ってしまいます。
どうすればスペースが開かないようにできますか?
489nobodyさん:04/09/15 16:02:16 ID:???
>>488知らん。
本当に解決したいのなら情報を小出しするな。
490nobodyさん:04/09/15 16:45:14 ID:???
>>488
print "@arr";
 ↓
print @arr;
491nobodyさん:04/09/15 16:45:21 ID:???
>>488=教えてクン
492nobodyさん:04/09/15 17:25:34 ID:???
まぁ、質問スレだから教えて君だろw
493nobodyさん:04/09/15 17:26:58 ID:???
それでも>>1くらいは読んでほしい思う
494nobodyさん:04/09/15 17:27:05 ID:???
>>490
ソース出てないのになんで解ったんだ?
495nobodyさん:04/09/15 17:49:10 ID:???
ありがちなミスだからじゃね
496nobodyさん:04/09/15 19:19:54 ID:???
先生!質問です
datファイルの5行目をいきなり(1から4行目は読ませず)変数に読み込ませるにはどうしたらいいですか?seek関数では無理ですか?

datファイルの例

[0001](\n)
04/09/15(\n)
Name(\n)
http://www.〜〜(\n)
〜@〜.co.jp(\n)
Pass(\n)
IP(\n)
……
497nobodyさん:04/09/15 19:58:31 ID:???
498nobodyさん:04/09/15 22:38:03 ID:???
>>490
>>494
ログの「頭」だから違うんじゃないかなあ。($arr[0] eq ''ってオチはあるかもしれんが)
499nobodyさん:04/09/15 22:57:27 ID:???
>>498
どうせ1行目だけ開いてないことになんか気付いてないよ
500500:04/09/16 07:33:57 ID:???
SSIで呼び出す #exec cmd は perlの場合 require で出来たんですけど、
他の #exec cgi と #include virtual は何を使えば実行してくれるのでしょうか?
501nobodyさん:04/09/16 08:35:14 ID:???
>>500
何言ってるかわからんぞ。
SSIとかCGIなどは、httpdサーバ(たぶんApache)の設定で実行できるか
どうかが決まる。
それと#exec cmd とか、#exec cgi とか、 #include virtualって何だ?
#はコメント記号だが。Perlスクリプトに何て書いたか書いてみろ。
502500:04/09/16 09:10:41 ID:???
分かりにくくてすいません…

ssiのコマンド exec 引数 cmd を perl で実行するには require で出来ますよね?
ssiの他の、#exec cgi や #include virtual は perl ではどうやって呼び出したら実行してくれるのか。と言う事です。
503500:04/09/16 09:16:23 ID:???
と言うか全体的に考え方間違ってたらすいません(汗
504nobodyさん:04/09/16 11:05:43 ID:???
>>502
近いものを選ぶとこんな感じになるのかな。
<!--#exec cmd="test.pl"--> →require
<!--#exec cgi="cgi-bin/test.cgi"--> →socket
<!--#include virtual="test.txt"--> →open
505nobodyさん:04/09/16 11:06:40 ID:kf2OMroI
cgiを呼び出す時に"**.cgi?keyword"として
渡した"keyword"を受け取ったcgiのほうで
変数に入れる方法が知りたいのですが・・・。
よければその方法(?で何か渡す)を何と呼ぶのか
キーワードだけでも教えてもらえれば調べます、
初歩的ですいません。よろしくおねがいします。
506505 :04/09/16 11:15:26 ID:???
ごめんなさい
調べたら出てきました、「引数」ですね
ほんとすいません・・・・
ttp://tohoho.wakusei.ne.jp/wwwcgi3.htm
507nobodyさん:04/09/16 12:04:04 ID:???
>>505
キーワードは「クエリ メソッド」
GETの場合既に$ENV{'QUERY_STRING'}に"keyword"が入ってる
508nobodyさん:04/09/16 12:22:47 ID:???
>>505
ってか、面倒だからCGIモジュール使いなYO
509500:04/09/16 14:35:39 ID:???
>>504 さんありがとうございます。
ただ socket を使った事が無くて検索してみましたけど、意味もあんまり分からなかったです。
どう記述したら良いのでしょうか?
読み込むファイルによって異なる記述になるんでしょうか?
510505 :04/09/16 14:52:29 ID:???
>>507
ありがPございます。
またクエリだヽ(`Д´)ノ
511nobodyさん:04/09/16 14:52:41 ID:???
>>509
1: 自分はこう言う事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
512500:04/09/16 15:15:35 ID:???
今までssiで <!--#exec cgi="../xx/xx.cgi"--> と呼び出していたのを、perl内で作動させたいんです。

require '../xx/xx.cgi';
でやったらログファイルへのパスが上手くいきませんでした。
xx.cgiの中には

$logfile = "xx.txt";
if(!open (DATA,"$logfile")){&output("error404"); exit;}

と言うのを書いてるので、error404 と出ます。
同じフォルダに持ってくると出来ますが、違うフォルダじゃなければいけないので…。
それで、>>504さんの解答をもらったので socket ではどうやって記述したら良いのかなと。

ディレクト構造は、
+folder1
  ┣xx.cgi
  ┗xx.txt
+folder2
  ┗xx.cgiを呼び出したい.cgiファイル

です。
513nobodyさん:04/09/16 15:20:35 ID:???
> ただ socket を使った事が無くて検索してみましたけど、
> 意味もあんまり分からなかったです。

( ´ー`)フゥー...
514nobodyさん:04/09/16 15:26:55 ID:???
>>512
socketを使うまでもないな。
$logfile = "xx.txt"; → $logfile = "../folder1/xx.txt";
でどうだろう。
515nobodyさん:04/09/16 15:32:26 ID:kf2OMroI
別件で度々すみません、
このようにファイルを読み込んで、追加書き込みしているのですが

open(IN, "$outfile");
@data = <IN>;
close(IN);
open(OUT, "> $outfile");
print(OUT "<div>new</div>\n@data");
close(OUT);

こうしてデータを追加していくと$outfileの中が
<div>new</div>
 <div>new</div>
  <div>new</div>
このようにスペースが入り込んでズレていくんです。
原因わかりますでしょうか。
516nobodyさん:04/09/16 15:37:43 ID:???
517515 :04/09/16 15:55:35 ID:???
>>516
print(OUT "<div>new</div>\n", @data);
で問題なくいきました。ありがとうございますた。
518500:04/09/16 16:05:00 ID:???
>>514
表示出来ました(^^;
ありがとうございます。
と言うか思いつかなかった自分が恥ずかしいです…。

>>513
socket ってそんなに使う物なんですか?
socket 使ってる配布CGI一個しか見た事ないんですけど…
敷居が高いとか?
今勉強している本にも無かったです(汗
519nobodyさん:04/09/16 16:24:21 ID:???
LWPとかIO::Socketはサルでも分かるよ
520500:04/09/16 16:31:27 ID:???
>>519
そうなんですか…
自分がまだまだなだけですね!
ありがとう御座いました。
521nobodyさん:04/09/16 16:31:30 ID:???
>>518
他のサーバーのページやらcgiの出力結果を取得できるので
単語(含>>519)だけでも覚えておけばいいと思う。
522500:04/09/16 16:35:58 ID:???
>>521
ハィ!
ありがとうございます。
523nobodyさん:04/09/16 16:58:25 ID:TnwBmEsg
GDモジュールを使って作成した画像をさらに
Image::Magickモジュールを使って画像サイズを変更することは可能でしょうか。

#Image::Magick
use Image::Magick;
$width = 120;
$img = Image::Magick->new;
$img->Read("xxx.cgi");
$img = $img->Transform(geometry => $width);
print "content-type:image/png\n\n";
binmode(STDOUT);
$img->Write("png:-");

Image::Magickがcgiファイルを読み込めないみたいなので
GDモジュールの方でxxx.pngといったような画像ファイル名を
吐き出させる方法がわかりません。

#GD
use GD;
$w = 500;
$h = 500;
$im = new GD::Image($gw,$gh);
(描画処理)
$im->png(-1);
524その(1):04/09/17 00:29:48 ID:iw09y7mQ
cgiを作ろうと思ってるんですけども、
#!/usr/local/bin/perl
require "./cgi-lib.pl";
&ReadParse();
$number_2 = $in{'number_1'};

#置き換え開始
$number_2 =~ s/イチ/1/g;
#$number_2 =~ s/ニー/2/g;
$number_2 =~ s/サン/3/g;
$number_2 =~ s/ヨン/4/g;
#$number_2 =~ s/ゴー/5/g;
$number_2 =~ s/ロク/6/g;
$number_2 =~ s/ナナ/7/g;
$number_2 =~ s/ハチ/8/g;
#$number_2 =~ s/キュー/9/g;
#$number_2 =~ s/ゼロ/0/g;

525その(2):04/09/17 00:30:12 ID:iw09y7mQ
#結果の表示
print <<"ABCD";
Content-type: text/html

<html>
<body>
$number_2<br>
</body>
</html>
ABCD

これが本文です、number1には「ナナニーサンニーイチキューハチキューゼロ」の
ような文字(htmlのformからとってくる)が入っていて、それを数字に直したいです。
しかし、なぜか2、5、9、0の置き換えをしようとするとエラーになってしまいます。
なぜなのでしょうか
526nobodyさん:04/09/17 00:33:21 ID:???
ニー ゴー キュー
 ↑  ↑   ↑
527nobodyさん:04/09/17 00:46:12 ID:???
Shift_JISだと
'ー' 0x815B
'ゼ' 0x835B
# 0x5B → [
だからコケるのでしょう。

むしろ、「ニー」「ゴー」が関西ローカルなことに注意してください。
528nobodyさん:04/09/17 01:20:46 ID:???
>>527
標準語を使えばOKなのですね?
529nobodyさん:04/09/17 01:21:24 ID:???
>cgiを作ろうと思ってるんですけども、
どんなCGIを作ろうとしてるのか気になりますなぁ
530nobodyさん:04/09/17 01:22:14 ID:???
イチ ニ サン ヨン ゴ ロク ナナ ハチ キュウ ジュウ

なら大丈夫。
531nobodyさん:04/09/17 04:04:27 ID:???
イー リャン サン スー ウー リュー チー パー・・・
ならもっといい
532525:04/09/17 04:26:09 ID:iw09y7mQ
>>527 >>530 >>531
イチ ニー サン ヨン ゴー ロク ナナ ハチ キュー ゼロ
から成る文字列は、自分で作るのではなくコピペしてformにもってくるものなので
できればこのまま使いたいのです。それじゃないと、この変換を頭でやったほうが
速くなってしまう
しかし、”ー”と”ゼ”が入っていては正規表現は使えないってことですよね、
どうしたらいいんだか。。
533nobodyさん:04/09/17 04:57:01 ID:???
皆、ふざけてるだけだ。漏れがまじめに答えてやる。
require 'jcode.pl';
$number_2 = $in{'number_1'};
&jcode::convert("*number_2", "euc");
この上と下の2行を加えればよい。jcode.plでググルこと。
534nobodyさん:04/09/17 05:04:55 ID:???
文字コード変えればええやん
535534:04/09/17 05:05:45 ID:???
ぎゃあ、かぶたよorz
536nobodyさん:04/09/17 06:10:09 ID:???
\Qでクォートすれば?
537nobodyさん:04/09/17 08:38:01 ID:???
UTF-8で書けばいいじゃーん
538nobodyさん:04/09/17 12:32:25 ID:fDDxvp6Z
@ura = ("$answer{'team2'}","$answer{'1u'}","$answer{'2u'}","$answer{'3u'}","$answer{'4u'}","$answer{'5u'}","$answer{'6u'}","$answer{'7u'}","$answer{'8u'}","$answer{'9u'}","$answer{'totalu'}",);

すいません、上の配列をフォームで送った時にEUCに書き換えようと
した場合、&jcode'convert(*ura,'euc');でやると文字化けします。
どの部分を指定してやればよいのですか?
539nobodyさん:04/09/17 12:37:40 ID:???
@uraは配列じゃん。jcode::convertの第一引数は変数。
540nobodyさん:04/09/17 13:36:28 ID:442/c2rw
DBMを使って検索ベースのアプリを作ってるんですが、
use strict;していると、Fcntlの定数O_RDONRYなどに
引っかかりエラーが出てしまうんですが、これってしょうがないんでしょうか?
use strict 'vars';
だと大丈夫なのですが・・・。
すんません、おながいします。

Software error--------------------------------------
Bareword "O_RDONRY" not allowed while "strict subs"
----------------------------------------------------

tie(my %h, 'SDBM_File', $dbm_name, O_RDONRY, 0600);
ここの、O_RDONRYの部分です。
541nobodyさん:04/09/17 14:03:17 ID:???
>>538
jcode::convert(\$_, 'euc')
  for @answer{qw(team2 1u 2u 3u 4u 5u 6u 7u 8u 9u totalu)};

>>540
s/O_RDONRY/O_RDONLY/g;
542540:04/09/17 14:13:35 ID:???
>>541
あぁぁ・・・、すいません、ホント申し訳ない・・・。
そしてありがとうございます。
543nobodyさん:04/09/17 14:21:45 ID:???
>>540
use Fcntlのあとで別のパッケージに切り替えたりしてない?
544543:04/09/17 14:24:49 ID:???
そんな難しく考える問題じゃなかったかonz...
545540:04/09/17 15:10:51 ID:???
>>543
ほんとすんません・・・。
O_RDWRだと大丈夫なのにどうして!?
とかしばらく、strictとFcntlについて調べてました・・。
546nobodyさん:04/09/17 15:47:49 ID:???
onry
547538:04/09/17 16:06:15 ID:fDDxvp6Z
>>541
ありがとうございました。無事解決しました。
まだperlはじめたばかりで、教科書にも載っていない事だったので
感激です。
548nobodyさん:04/09/17 19:39:02 ID:???
アクセスカウンターで2回に1回カウントするようにするにはどうしたらいいでしょうか?
549nobodyさん:04/09/17 19:49:43 ID:???
0.5足す
550nobodyさん:04/09/17 20:17:45 ID:???
それだと2回に1回のカウントじゃなくて1回ずつカウントしてしかも、
アクセスカウンターが
2412351.5
みたいになっておかしくなるのでダメなんです。
551nobodyさん:04/09/17 20:21:07 ID:???
内部的に覚えておいて、出力時に切り捨てる
552nobodyさん:04/09/17 20:23:33 ID:???
とある理由でperlを覚えたほうがいいということになったのですが、perlとは具体的になにができるのでしょうか
いきなりテンプレのプログラムのための文字列を覚えてもさっぱりです
553nobodyさん:04/09/17 20:31:25 ID:???
>>552
お前には無理。
早く諦めて別のことに青春を燃やせ。
554nobodyさん:04/09/17 20:40:58 ID:???
>548
出力時に1ビット右シフト。
555nobodyさん:04/09/17 20:48:45 ID:???
>>552
>>9を100万回読み直してから来てください。
556nobodyさん:04/09/17 20:49:18 ID:???
>>550
int
557nobodyさん:04/09/17 20:53:37 ID:???
>>552
まずPerlが何の略かを調べればそれが答えになるかも。
つーか他に何か知ってる言語あるの?
それ書いてくれたら答えやすいかもしらん。
558nobodyさん:04/09/17 20:54:23 ID:???
>>552
えーっとね、エロゲとかエミュレータとか作れる
559nobodyさん:04/09/17 21:21:35 ID:???
>>551
>>556
出来ました。
ありがとうございます。
560nobodyさん:04/09/17 22:54:49 ID:???
ファイルからread関数で変数にnバイト読み込んだとき、もし改行が入っていたら、その前後で分けて配列に代入するにはどうすればいいですか?
561nobodyさん:04/09/17 23:07:15 ID:???
>>560
@a = split /\r?\n/, $in;
562nobodyさん:04/09/18 12:04:43 ID:???
>561
dクス
563538:04/09/19 01:32:18 ID:n0F83URY
>>552
僕も初心者なんですが、テンプレを丸写ししても何もわからないです。
僕が今している事は、よく使われるような関数(25個くらい)と、構文(10個くらい)
それと、正規表現、サブルーチン、ライブラリの使い方、これらを徹底的に
覚えようと思っています。いきなり完成されたテンプレからはじめるよりも
パーツから覚えていくほうが絶対にいいと思います。それと、ローカルで
CGIを動かせるように、perlやhttpd、apachなんかを入れておくと、htmlを
ローカルで動かすよに手軽にコーディングして動作確認できます。
お互いに、挫折せずに頑張りましょう
564nobodyさん:04/09/19 01:50:03 ID:???
ここはコーディングの質問スレなのよね
565nobodyさん:04/09/19 05:10:18 ID:vPjLXO2Q
if(index $a,"pc"){ $b= $pcbnr;};
上記のような文字列検索を行っています。
$aの中身は"pc imode voda ezweb"です。
if(index $a,"ezweb"){ $b= $pcbnr;};の場合は正常に動作します。
"pc"と言う文字列だけは上手く判断出来ないようです。
何故でしょうか?
566nobodyさん:04/09/19 05:40:18 ID:???
$pcbnrはどっからきたのだ?
検索して何をしたいの?
それと最後の";"いらないよ
567nobodyさん:04/09/19 05:57:32 ID:???
>>565
index $a,"pc"の返り値が0だから
つーか、indexが何をする関数か調べろ。

ただマッチングしたいんだったら
if($a =~ /pc/){

}
568nobodyさん:04/09/19 06:00:15 ID:???
>>563
cgiでやるよりコンソール(.plファイル)でやったほうが効率いいかもよ。
行数少ないし、すぐにエラー行数分かるし。
569nobodyさん:04/09/19 21:10:27 ID:8Bm3sZnu
掲示板を作っているのですが、大きな壁に当たりまして、
書き込みを保存しているファイルから、指定した件数(仮に5件とします)だけ読み込み、続きも"次の5件"のようなリンクで5件ずつ読み込んで行きたいのです。
いろいろ参考書を読んでみましたが、方法が思いうかびません…
よろしくお願いしますm(_ _)m

あと、HTTPヘッダ排出のあとは2行あけないといけないと言われたのですが、なぜなのでしょうか?
570nobodyさん:04/09/19 21:11:25 ID:???
ファイルから全部読み込み5件ずつ表示すれば
571nobodyさん:04/09/19 21:13:32 ID:???
cgi?page=2
572nobodyさん:04/09/19 22:03:10 ID:???
>>569
ちゃんと最初からPerl勉強した方がいいと思う

>あと、HTTPヘッダ排出のあとは2行あけないといけないと言われたのですが、なぜなのでしょうか?
2行?1行じゃなかったっけ?とりあえずRFC嫁
573nobodyさん:04/09/19 22:05:28 ID:???
行で言えば1行だね
569は改行コードが二つっていいたかったのかな。
574565:04/09/20 00:38:39 ID:WP+I8Woy
>>567
if関数でも出来たんですね、パターンマッチ演算子は配列じゃないと駄目かと思っていました。
index $a,"pc"の返り値が0と言うのが解らないのです、$aは"pc imode voda ezweb"です。
自分で色々やってみた所、if(index $a," pc"){ $b= $pcbnr;};とすると思い通りに動作しました。
なぜ、半角スペースを入れるとするのでしょうか?
575nobodyさん:04/09/20 01:13:40 ID:???
>>574
>>567
> index $a,"pc"の返り値が0だから
と解説しているだろうが、このバカチン。
576nobodyさん:04/09/20 01:52:41 ID:???
>>574
-1が返ってくるから。
indexが何する関数なのか調べろと567が言ってるだろ。
あと、おそらくおまいの思い通りには動いてないからな。
ためしにマッチしない文字でやってみなはれ。
ついでにifも調べて来い。
577565:04/09/20 03:24:21 ID:WP+I8Woy
>>575,576
勘違いしていたようです。汗
indexは文字列検索に使う関数だと思っていたのですが、文字列の位置を返す関数なのですね。
CGIの本に書かれていたサンプルソースがパターンマッチっぽい例だったので、文字列検索向けの関数かと思っていました。
ifは数値が 「0」 か 「空」 の場合には偽、それ以外の場合には真なんですよね。
負の値も偽と判断されると思い込んでいました。
>>567さんのやり方で確実に動作する事を確認しました。
結構、適当にPearlを勉強していたのですが、もっと真面目にやろうと思います。汗
有り難う御座いました。
578nobodyさん:04/09/20 03:59:55 ID:???
>>577
Perlね
579nobodyさん:04/09/20 04:16:07 ID:???
久しぶりに見たな。
580nobodyさん:04/09/20 06:08:04 ID:???
実際にはPearlと名づけたかったんだが、すでにあったからPerlに無理にしたから
そお遠いわけでもないがな。
581nobodyさん:04/09/20 09:22:55 ID:???
ばかだな
582nobodyさん:04/09/20 10:17:23 ID:???
>577
まあ、ガンガレ
583nobodyさん:04/09/20 18:56:55 ID:???
下のcgiを実行すると
3
と表示されました。どうなっているんでしょうか?



print "Content-type:text/html\n\n";

@_ = ("あ<>か","い<>き","う<>く");
@value = split(<>, @_);
print $value[0],<br>;
print $value[1],<br>;
print $value[2],<br>;
print $value[3],<br>;
print $value[4],<br>;
print $value[5],<br>;
print $value[6],<br>;
print $value[7],<br>;
584nobodyさん:04/09/20 19:01:04 ID:???
splitの第2引数にリストは使えんのだが
585nobodyさん:04/09/20 19:13:51 ID:???
push @value, split(/<>/, $_) foreach (@array);
586nobodyさん:04/09/20 19:24:26 ID:???
>>583
それはまともに動くのか?
587nobodyさん:04/09/20 19:26:10 ID:???
push @value, split /<>/ for @_;
588583御破算:04/09/20 20:29:46 ID:???
>584
え、そうなんですか(;_;)
>586
404は出ませんでした。httpdとinfoseekで確認しました。

>585>587
ありがとうございます。今携帯から見ているので、後で試してみます。
589nobodyさん:04/09/20 20:40:58 ID:???
>>588
404・・・?
590nobodyさん:04/09/20 20:47:03 ID:???
共用サーバでCGIの実験するな。師ね。
591nobodyさん:04/09/20 21:15:09 ID:???
@_には3個入ってるんだから、
@value = split(<>, '3');
と同じ
592nobodyさん:04/09/20 21:27:36 ID:???
これくらいローカルでやってくれよ。
593583:04/09/20 22:31:17 ID:???
>589
403でしたorz
>590
httpdがバグった、と思ったので…httpdで試してsyntax errorが出ず、永久ループでなくてもダメですか?
>591
ありがとうございます。それも調べてみます
>592
ローカルとはmyのことですか?だとしたらどこをローカル化すればいいんですか?
594nobodyさん:04/09/20 22:39:12 ID:???
                             |
                             |
      ∩___∩             |
      | ノ  _,  ,_ ヽ        ((  | プラプラ
     /  ●   ● |         (=)
     |    ( _●_)  ミ _ (⌒)   J  ))
    彡、   |∪|  ノ
⊂⌒ヽ /    ヽノ  ヽ /⌒つ
  \ ヽ  /         ヽ /
   \_,,ノ      |、_ノ
595nobodyさん:04/09/20 22:52:17 ID:???
>>593
ttp://support.microsoft.com/default.aspx?scid=kb;ja;879066

httpdがバグったって・・・。
何故プログラムを先に疑わないんだ。
596nobodyさん:04/09/20 22:52:25 ID:???
2重の釣りか
597nobodyさん:04/09/20 22:56:31 ID:???
print "Content-type:text/html\n\n";

@_ = ("あ<>か","い<>き","う<>く");

foreach(@_){
$baka .= $_;
}

@value = split(<>, $baka);
print $value[0],<br>;
print $value[1],<br>;
print $value[2],<br>;
print $value[3],<br>;
print $value[4],<br>;
print $value[5],<br>;
print $value[6],<br>;
print $value[7],<br>;
598nobodyさん:04/09/20 23:04:00 ID:???
>>597
君アホでしょ
せめて確認してから貼れよw
599nobodyさん:04/09/20 23:20:32 ID:???
@_ = ("あ<>か","い<>き","う<>く");
print "Content-type:text/html\n\n";
print $_."<br>",for split /<>/ ,join("<>",@_);
600nobodyさん:04/09/20 23:27:37 ID:???
join関数を知らなかった俺はバカです
601nobodyさん:04/09/20 23:28:38 ID:???
joinとか以前に動かないから
602nobodyさん:04/09/20 23:29:06 ID:???
>>583のスクリプトを*そのまま* aa.plという名前で保存する。
echo hage| perl aa.plすると、確かに3と出力される。
何が起こっているか誰か解説してくれ。
603nobodyさん:04/09/20 23:31:26 ID:???
604nobodyさん:04/09/20 23:34:53 ID:???
605602:04/09/20 23:42:47 ID:???
>>603-604
dクス
606583:04/09/20 23:55:49 ID:???
>593
よく強制終了するので…クロック数300rヘルツ鯖(´・ω・`)
>599
join関数なんてあったんですね。知りませんでした
>591
>603で気付いた、前スレ誤解スマソ
>604
そういうことだったのか…
607nobodyさん:04/09/21 02:08:45 ID:???
>>606
use strict;するともっともっと気付く。
608nobodyさん:04/09/21 21:16:47 ID:UQFv84yK
レンタル鯖で、セション管理のモジュールがインスコされてない&インスコ禁止なので、
ナイスなライブラリがないでしょうか・・・
もう自分で書くしか?
609nobodyさん:04/09/21 22:11:41 ID:???
>>608
CGI::Session::AuthはPurePerlじゃなかったか?
610nobodyさん:04/09/21 22:12:03 ID:???
失礼。CGI::Session::AuthじゃなくてCGI::Sessionだ。
611nobodyさん:04/09/21 22:56:33 ID:???
ディレクトリのフォルダとかファイルとか
判別したり、容量、日時を読み出しているのですが
どこかにそういう関数とか解説されたHPないですか

>>1あたりのリンクにはなかったです
612nobodyさん:04/09/21 22:58:24 ID:???
613nobodyさん:04/09/21 23:24:42 ID:VDADrx76
Perlでのメール送信プログラムについて、質問です。

ヘッダを作成し、その内容にそってメールを送信するようにしているのですが、
特定の環境下で文字化けが発生してしまうようです。
ヘッダに
Content-Type: text/plain; charset="ISO-2022-JP"
と追加しているのですが、コレだけではダメなのでしょうか?

もう一点、質問なのですが、Beckyなどのメーラーから送信するとヘッダに
Content-Transfer-Encoding: 7bit
が付属されていますが、この内容も文字化けに関係しているのでしょうか?

質問内容が、Perlとちょっと離れているかもしれませんが・・・
よろしくお願いします。
614nobodyさん:04/09/21 23:32:10 ID:???
>>613
ちょっとどころではありませんのでRFCを舐めるようにして読んでみましょう。
615608:04/09/21 23:38:12 ID:UQFv84yK
>>609さん
PurePerlだと、PPMとか使ってインストールしなくても、
任意の場所にモジュールファイルを置いて、requireすればOKなんでしょうか?
616nobodyさん:04/09/21 23:44:41 ID:???
requireって…
617nobodyさん:04/09/21 23:59:06 ID:VDADrx76
>>614
スイマセン、RFCって何でしょうか・・・・
このような質問は、そちらですれば良いと言う事ですか?
618nobodyさん:04/09/22 00:09:08 ID:???
わからない言葉があったらまずは何をすべきか
619nobodyさん:04/09/22 01:11:45 ID:???
人に聞く
620nobodyさん:04/09/22 01:20:10 ID:???
>>613
文字コードとか
文字コードとか
文字コード勉強した方がいいよ
621nobodyさん:04/09/22 10:52:47 ID:???
スイマセン、RFC板が見つかりませんm(_ _)m
622nobodyさん:04/09/22 11:54:45 ID:???
623nobodyさん:04/09/22 15:34:38 ID:???
ググってみたんですが良く分かりません。

Perlを使用してDBアクセスを行いたいのですが、
開発環境はどのように作成したら宜しいのでしょうか?

インタプリタ等、必要ですよね・・・
624nobodyさん:04/09/22 15:56:04 ID:???
PerlインストールしてDBインストールすればいいが。
625nobodyさん:04/09/22 16:07:28 ID:???
>>624
環境構築は特に必要ないのでしょうか?

何も入っていないPCに
PerlインスコしてOracleインスコして

それから、FTPでCgiをUpすれば良いということでしょうか?
626nobodyさん:04/09/22 16:55:21 ID:???
>>625
あとDBドライバな。
627nobodyさん:04/09/22 16:58:49 ID:???
>>626
CgiってTxtで書けるんですか?
628nobodyさん:04/09/22 17:03:07 ID:???
プログラムが設置されているディレクトリ名を取得することは可能でしょうか?
例えば、http://hoge.com/xxx/test.cgiのtest.cgiにアクセスした時に
ディレクトリ名のxxxを変数として取得したいのですが。
よろしくお願いいたします。
629nobodyさん:04/09/22 17:15:23 ID:???
>>627
どうやらキミには無理なようだ・・・

>>628
$0からディレクトリを切り出したら?
630nobodyさん:04/09/22 17:36:12 ID:???
>>629
おぉ!$0ってのはなんだか使えそうですね。
試行錯誤してみます。
ありがとうございました。
631nobodyさん:04/09/22 17:46:12 ID:???
$0ではファイル名しか取得できないようでした。
んー、難しい。
632nobodyさん:04/09/22 17:55:43 ID:???
>>631
あれ!?そうだっけ、すまん。
んじゃ
$ENV{'SCRIPT_FILENAME'}, $ENV{'SCRIPT_NAME'}, $ENV{'REQUEST_URI'}
でどお?
633nobodyさん:04/09/22 17:59:01 ID:???
>>632
マジサンクスです!
勉強になりました!
634nobodyさん:04/09/22 18:35:24 ID:???
>>629
そんなぁ・・・
635nobodyさん:04/09/22 19:23:37 ID:???
"ググったら"山ほど出てくると思うんだが
636nobodyさん:04/09/22 21:15:51 ID:???
何もわからん奴は本買えよ
637nobodyさん:04/09/23 00:56:30 ID:???
>>634
まず、CGIとPerlの違いを理解してから出直して来い。
638nobodyさん:04/09/23 12:05:23 ID:???
exit関数の質問です。exit; exit(); exit(0); などいろんな書き方を見かけるんですが、意味は違うんでしょうか?
639nobodyさん:04/09/23 12:07:07 ID:???
まぁプログラムの基本としてexit(1);は異常終了を示す物だと覚えていて欲しい
640nobodyさん:04/09/23 13:49:58 ID:+nr7omoU
デコードについて質問です。

URIエンコードされてる文字列を元に戻すコードは

$buffer =~ s/%([a-zA-Z0-9][a-zA-Z0-9])/pack "H2",$1/eg;

$buffer =~ s/%([a-zA-Z0-9][a-zA-Z0-9])/pack "C",hex($1)/eg;

この二つのどちらでもデコードできますが、どちらがおすすめですか?
前者の方が処理は速いです。でもだいたいの入門サイトには後者のコードが載ってます。
そこらへんで悩んでます。みなさんあどちらを使ってますか?
641nobodyさん:04/09/23 13:51:55 ID:???
>>640
どっちでもいい
642nobodyさん:04/09/23 13:52:47 ID:+nr7omoU
>>641
どうしてそういうこと言うんですか!?
643nobodyさん:04/09/23 13:55:41 ID:???
>>642
どっちでもいいからそういうこと言う
644nobodyさん:04/09/23 14:06:57 ID:+nr7omoU
>>643
そんなっ・・・・・

Cでやるのは明らかにに非効率で、処理時間も倍かかるのに何故かCの方がスタンダードな
理由をあたしと話してみてもいいじゃないですかっ!

もういいもん。あたし帰るからねっ!
645nobodyさん:04/09/23 14:20:34 ID:???
>>644
帰って吊るしたロープに首を通せばいい
646nobodyさん:04/09/23 14:30:55 ID:+nr7omoU
>>645
何よあんたっ!?すっごいむかつくっ!信じらんない!
もうやめて!あなたここにこないで!絶対にこないでよ。
647nobodyさん:04/09/23 14:49:03 ID:???
さっさと帰れ
648nobodyさん:04/09/23 14:50:28 ID:qhT0f5z2
my で複数の変数を一気に初期化したい場合はどうすればいいのでしょうか?
my ($a=1,$b=2); だとエラーになります
定義したあとに一つ一つ代入していくしかないのでしょうか?
649nobodyさん:04/09/23 14:52:57 ID:+nr7omoU
>>648
my ($a,$b) = (1,2);
650nobodyさん:04/09/23 14:56:18 ID:???
my $a = 1,$b = 2;
651nobodyさん:04/09/23 15:01:42 ID:???
すみません。

my @a = qw/ a b c/;
my @b = qw/ a b c d/;

二つの配列があって、@bには@aの持ってない値を持つことを禁じたいのです。
なので@aにない値なら削除したいのですが、どうかけばよろしいですか?

for ( 0..$#b)
とかやるとブロック内で@bの要素を減らすと問題がありますよね・・・おねがいします。

あ、あと追加で済みませんが、
my $a = [qw/1 2 3 4/];
のような場合のラストインデクスの求め方は
@$#a
でうまくいかないのですが、どうかくのですか?
652nobodyさん:04/09/23 15:04:18 ID:???
>>640
$buffer =~ s/%([a-f0-9][a-f0-9])/chr(hex($1))/ieg;
653nobodyさん:04/09/23 15:09:17 ID:???
654651:04/09/23 15:13:10 ID:???
>>653
・・・どう応用すればいいんでしょうか?
655nobodyさん:04/09/23 15:28:26 ID:+nr7omoU
>>651
my @c;
foreach my $value (@b){
if ( map /$value/, @a ) { push @c,$value }
}

これで@cの中には@aにあるものしか入らないよ。>>653はむかつくやつだから
無視した方がいいよっ!だって私回答したんだから、それくらい言う権利あるわよね!
656nobodyさん:04/09/23 15:30:20 ID:???
>>651
前半:
my %a;
map $a{$_}++, @a;
@b = grep !$a{$_}, @b;

後半:
$#$a
657nobodyさん:04/09/23 15:33:08 ID:+nr7omoU
>>656
何あんたっ!もう私が答えてるのよ!失礼なことしないでよっ!バカじゃないの!
658651:04/09/23 15:41:12 ID:???
>>656
そういうことでしたか;勉強不足ですみません。ありがとうございました。
659nobodyさん:04/09/23 15:56:18 ID:???
釣り師としては3流
660651:04/09/23 16:04:15 ID:+nr7omoU
思いっきりつれてるけどなw
661nobodyさん:04/09/23 16:56:25 ID:???
$varに$num=123、$cha="abc"をくっつけて$var123="abc"を作りたいんですが、どうすればいいですか?
662nobodyさん:04/09/23 17:00:48 ID:???
>>661
ハッシュ使えばいいじゃん
663nobodyさん:04/09/23 17:06:44 ID:EIIt3BOR
GD::Graphについて質問です。
簡易的なサンプルのグラフが出力でき、目的の棒グラフを作ろうと
思って、棒グラフと、点ぐらふで、左軸と右軸にそれぞれ違った
数値を持たせようと思い、オプションのセットの部分で、

$graph->set(
(略)
two_axes => true,
y1_max_value =>100,
y1_min_value =>0,
y2_max_value =>50,
y2_min_value =>0
);

と表してみたのですが、左の軸しか出力されません。
true_axesの値がtrueの時と言うことは、書いてあったので、
そこがおかしいのかと思い、two_axes => "true",としてみたり
two_axes => 1,としてみたり、色々試してみたのですが、
だめでした。どのようにしたら、左右別々の軸の値を出すことが
できるでしょうか?ご教授お願いいたします。
664nobodyさん:04/09/23 18:28:51 ID:???
$a = "abcdeFGRYEHDU-sss-";

もしも$aの値の中にa-zA-Zとハイフン(-)以外を含んでたら処理発動ていうのがしたいんですが、

$a =~ /[a-zA-Z\-]/;
としてもうまくいきません。ハイフンをエスケープできてないのでしょうか?
665nobodyさん:04/09/23 18:48:23 ID:???
if ($a =~ /[^a-zA-Z\-]/){
処理
}
666nobodyさん:04/09/23 19:43:29 ID:???
[^A-Za-z-]
667664:04/09/23 20:46:29 ID:???
>>665-666
すみません。そこ書き間違えてました。
[^a-zA-Z\-]としてます。

my $a = "abcdeFGRYEHDU-sss-";
print "ok" if $a =~ /[^a-zA-Z\-]/;

これだと普通にうまくいくようなので、どうやら初めから他の部分のコーディングにミスがあったんだと思います。
すみません。
668nobodyさん:04/09/23 21:16:21 ID:???
フォームからsubmitしたCGIの中で、
CGI::Liteのparse_cookiesを呼ぶと、
なぜかフォームの内容までが取得されてきてしまったり、
逆にparse_form_dataでクッキーの内容まで取得されたり、ということが起きています。

parse_cookiesは、parse_form_dataとほとんど同じ動きをする、
というのをどこかで見ましたが、同じ内容が取得されるということなのでしょうか?
669nobodyさん:04/09/24 00:20:24 ID:???
$a $b $c $d $eの中で一番大きな数字を$xに格納したいのですが
いちいちif文で$a>=$b && ...... とやる以外に方法はありますか?
670nobodyさん:04/09/24 00:36:03 ID:???
>>669
map { $x = $_ if($_ > $x);} ($a,$b,$c,$d,$e);
671669:04/09/24 00:49:04 ID:???
>>670
ありがとうございます。
672nobodyさん:04/09/24 01:07:35 ID:AJG/3HYE
あるCGIをダウンロードしたのですが
Editorでいじろうかと思ったのですが
文字が文字化けして何を書いてあるのかわからないのですが
この文字化けを解決する方法ないでしょうか?
673nobodyさん:04/09/24 01:23:51 ID:???
TeraPadでも使ってろ
674nobodyさん:04/09/24 01:26:51 ID:QHIu4qbQ
連番の key を持つ連想配列の中から、先頭か最後の key の data を取り出したいのですが
なにか手軽な方法はないでしょうか?
キーは不定なので直接指定することはできません

今は↓のようにいったん key を配列にしてからソートして目的の key を
指定してるんですが他に何かいい方法はないでしょうか?
my @tmp = sort keys(%abc);
my $data1 = $abc{$tmp[0]};
my $data2 = $abc{$tmp[$#tmp]};
675nobodyさん:04/09/24 02:22:53 ID:???
>>674
ハッシュのキーには順番はないんだからそれでもしょうがないんじゃない?

ところで連番って、キーは数字なのか?
もしそうならそれだと最後は得られないけど。
sortだけだとキーが1〜10としたら 1 10 2 3 4 ・・・になってしまう。
@tmp = sort { $a <=> $b } keys(%abc); にしないと。
676nobodyさん:04/09/24 10:09:11 ID:???
>>674
sortを1回やるのとmax,minをそれぞれ求めるのはどっちが得だろうか
677nobodyさん:04/09/24 11:12:13 ID:???
sortはO(n log n)でmin,maxを求めるのはO(n)になるのかなあ
678nobodyさん:04/09/24 11:23:21 ID:???
sortは最悪O(n^2)
679nobodyさん:04/09/24 11:32:22 ID:???
nが十分大きくなればオーダーきいてくるので明らかにsort不利っぽいけど、
小さいときどうかは微妙だよな。perlのsort意外に速いし...

680nobodyさん:04/09/24 14:05:57 ID:???
use strict;
use Benchmark;
use vars '%Hash';

my %rand;
$rand{ int rand 100000 }++ while keys %rand < $ARGV[0];
@Hash{ keys %rand } = values %rand;

timethese(-5, {
  each => sub {
    my $min_key = 100000;
    my $max_key;
    for (keys %Hash) {
      $max_key < $_ and $max_key = $_;
      $min_key > $_ and $min_key = $_;
    }
    my($min_value, $max_value) = @Hash{$min_key, $max_key};
  },
  sort => sub {
    my @key = sort { $a <=> $b } keys %Hash;
    my($min_value, $max_value) = @Hash{@key[0, -1]};
  },
});
681nobodyさん:04/09/24 14:25:15 ID:???
>>640
ttp://www.din.or.jp/~ohzaki/perl.htm#JP_Escape

後者のコードがスタンダードなのは、CGI が流行ったころに
後者を使ったスクリプトが出回ったせいじゃないかな。
他にも chr と hex を使ったものも見たことがある。
682nobodyさん:04/09/24 16:37:42 ID:???
use URI::Escape;

$buffer = uri_unescape($buffer);
683nobodyさん:04/09/24 19:34:09 ID:???
おまいらifの条件文が長くなった場合ってどうやって書いてる?(見やすくするための書き方)

if ( $a == 1 && $b == 1 or $c == 1 ){...}
とか
if ( $a ==1 &&
   $b == 1 or
   $c ==1   ){..}

どっちもイマイチ見づらい。おまいらはifの条件文がやむを得ず長くなってしまったときに
どうやって視認性を確保してる?
684nobodyさん:04/09/24 19:48:42 ID:???
>>683
なんで or のときは || 使わないで
and のときは && 使ってるの?
合わせたほうがよくない?
685683:04/09/24 19:55:58 ID:???
>>684
そうだったorzごめん。

それで何かいい書き方ないかな?一番いいのは冗長な条件文にしないことだけど、
たまにどうしようもないときってあるでしょ?
時間がないから妥協とかするときにでも、とっさにできる最低限のこととして
読みやすさだけは確保したいよね。
686nobodyさん:04/09/24 20:03:00 ID:???
>>683
三項演算子
687683:04/09/24 20:07:59 ID:???
>>686
そういう話ではないんだ^^;
条件文を冗長でないものにする方法じゃなくて、
冗長な条件文の読みやすくするための書き方みたいな感じ;
688nobodyさん:04/09/24 20:08:48 ID:???
>>683
else BLOCK が不要なら

{
  EXPR && EXPR || last;
  EXPR        || last;
  ...
}

とか。

Perl に限った話じゃないから、この辺ででも聞けば?
http://pc5.2ch.net/test/read.cgi/tech/1068752664/
689nobodyさん:04/09/24 21:16:00 ID:???
GETで送信される引数でカウンタを進ませ,表示するPerlスクリプトの基本的な機能だけ作ってみましたが,
↓Perl
ttp://bcmnhp1.hp.infoseek.co.jp/content2.txt
↓DATファイル
ttp://bcmnhp1.hp.infoseek.co.jp/ctdata2.txt
DATファイルの一行目は上手く動作していますが,二行目の同一IPをチェックする方に何故か初めと終わりに:が付いてしまいます。
↓処理後DATファイル
ttp://bcmnhp1.hp.infoseek.co.jp/ctdata2_b.txt

一体なにが起きているんでしょうか?
690689:04/09/24 21:19:18 ID:???
書き忘れましたが,処理後DATファイルは
引数「4」(http://~~~~/content2.cgi?4)
でアクセスした場合です。
691nobodyさん:04/09/24 21:55:07 ID:???
>@ct = <COUNT>;

ここで改行削除されてないから。
こうするとよくわかるんじゃない?

foreach $_ ( @count ) {
print COUNT "[$_:]";
}
foreach $_ ( @ip ) {
print COUNT "[$_:]";
}
692689:04/09/25 08:34:52 ID:???
>691
おぉ!出来ました!ありがとうございました!
693nobodyさん:04/09/25 12:44:16 ID:???
>>687
> 冗長な条件文の読みやすくするための書き方みたいな感じ;
冗長だったら最適化しろよ。
694nobodyさん:04/09/25 13:47:46 ID:???
とあるハッシュのキーの中に
test
というキーがあるかないかを調べるにはどう書くのが一番ですか?

if ( map/^test$/,keys %hash ) {
print "ありました";
}
もっと簡単な方法はありますか?
695nobodyさん:04/09/25 14:00:14 ID:???
>>694
if (exists $hash{test}) {
print "ありました";
}
696nobodyさん:04/09/25 14:13:17 ID:???
>>693
お前・・・・
最適化する時間も、才能も、素質も、スキルも・・・・・・・ないorz

そんなとき、そんな俺でも読みやすいソースにしたいっていってんだよボケ!
出直してこいや
697nobodyさん:04/09/25 14:41:12 ID:???
さぁ、香ばしくなってまいりました。
698nobodyさん:04/09/25 16:48:19 ID:???
どれが一番読みやすい?
if ($a == 1 and $b == 1 or $c == 1) {print 'ok'}
if ($a == 1 && $b == 1 || $c == 1) {print 'ok'}
if (($a == 1) * ($b == 1) + ($c == 1)) {print 'ok'}
if ($a == 1 and $b == 1) {print 'ok'} elsif ($c == 1) {print 'ok'}

視認性は、全体のアルゴリズムとコメントで解決するのが一番で、
if文をどう記述するかは二の次だと思うんだけど?
699nobodyさん:04/09/25 17:03:11 ID:???
>>696
見易さ(=見た目スッキリ)と読みやすさ(=処理内容のつかみやすさ)は別でしょう。
話の流れを追っても、あなたがどっちを優先したいのかがもひとつ見えないよ。

ここの人に最適化してもらうよりも、自分がわかりやすいと思うコード・記述に
しとけばいいと思うんだけどな。適度に冗長性を確保するのも大事だろうし。

>>698も書いてるけど、コメントのほうで整理しとけば条件文が長いことぐらいは
気にならないと思う。

と、>>686が一瞬「三浦理恵子」に見えた人が書いてみる。
700683 696:04/09/25 18:11:58 ID:f8iWY7is
>>699
>見易さ(=見た目スッキリ)と読みやすさ(=処理内容のつかみやすさ)は別でしょう。
>話の流れを追っても、あなたがどっちを優先したいのかがもひとつ見えないよ。

別なの?同じだと思ってた。
一番いいのはスキルアップして、最適なコーディングを瞬時にできるようになることなんだけど、
実際Perlばかりに時間を割けないので、とりあえず見やすさ&&読みやすさ%%把握しやすさだけ
なんとかならないかなと思って。

もちろん最適なコーディングに勝るものは無理だけど、少しはいい書き方ってあるのかなと。
いわゆる改行の入れ方、スペースの明けかた、揃え方。

まああいまいすぎだよね。絶対的な回答ではなく、みんなの習慣的な書き方の解答とかが
ほしかったけど・・・しつれいしますた。
701nobodyさん:04/09/25 19:43:11 ID:???
★= 頼むから言語論争はマ板でしてね =★
702nobodyさん:04/09/25 20:26:15 ID:???
だれも言語論争などしていない。
703nobodyさん:04/09/25 21:16:28 ID:???
ぶっちゃけ多めにコメントいれておけば問題ない。
少なくて意味がわからんかったときは時間かぐっとかるが、
多めなのは読み手が消せばいいだけだから問題ないし。

アルゴリズムの問題は書法の範囲の記法とは別次元だわな。
それは非常に大きな課題だし。
704nobodyさん:04/09/26 18:13:38 ID:tuEyJcFU
すみません、以下の要件を満たすためにはどのように書けばよろしいでしょうか。

・テキストの中から<div align="left">という文字列が含まれる行を探す
・みつかった<div align="left"> の行から、その次の </div> までのテキストを
抜き出してprintする

-<div align="left"> はテキスト中に1つのみです。
-</div> は何度も出てきます。

現状 @stringlist に突っ込んで、行数固定で抜き出していますが、
これだと(動的に生成されるページである為)内容が変わってしまうと
対応できません(当たり前)^-^;

よい方法があればお教えくださいm(_ _;)m
705nobodyさん:04/09/26 18:18:45 ID:???
>>704
正規表現を体得するのぢゃ、若きヂェダイよ
706704:04/09/26 18:31:00 ID:tuEyJcFU
はい。マスター。

いま、こんなかんじです^-^;

--------------------------------------------------
#!c:\perl\bin\perl.exe

open(IN, "bin.html") || die "cannnot open!\n";
@stringlist = <IN>;

#読み出す行数
$end = 10;

for ($begin=1;$begin<$end;$begin++){
print @stringlist[$begin];
}

close(IN);
--------------------------------------------------
707704:04/09/26 18:31:31 ID:???
sage忘れすいませんマスター
708なちじょあ ◆yEbBEcuFOU :04/09/26 18:51:12 ID:???
( ● ・3・ ● ) エェー @text = <IN>; $text = join('', @text);
               $text =~ s|.*<div align="left">(.*?)</div>.*|$1|s;
709704:04/09/26 18:53:56 ID:???
1.$begin = @stringlistから、<div align="left"> を探して、その行数を返す。
2.$end = 1の行数から検索を開始して</div>が見つかった行数を返す

で、実現できそうな気がするのですが、

・配列から任意の文字列を含む行を探す
・別の文字列を含む行を、特定の行(1で見つけた行)以降で探す

方法はないでしょうか。
710nobodyさん:04/09/26 18:59:41 ID:???
>>704
use HTML::Parser;
711704:04/09/26 19:01:06 ID:???
>>708
2行ーッ!!!??
バチーリですた。
なちじょあ ◆yEbBEcuFOU マスター。

でも何やってるかびっくりするぐらいさっぱりです。
…<div align..> と、</div> 行を含んだものを出すには、どこを
どういじればよいのでしょうか。

現状--------------------------------------------
open(IN, "bin.html") || die "cannnot open!\n";
@text = <IN>;
$text = join('', @text);
$text =~ s|.*<div align="left">(.*?)</div>.*|$1|s;

print $text;
---------------------------------------------------
712704:04/09/26 19:19:13 ID:???
解読試みるス。マスター。

$text = join('', @text); #''という文字列で区切って挿入。1行に纏めたんスねマスター。
$text =~ s|.*<div align="left">(.*?)</div>.*|$1|s; # ~ <^-^;???
713nobodyさん:04/09/26 19:24:45 ID:???
>>711-712
「出力されてるのは <div 〜>(かっこの中身ですか)</div> ?」と思いながら
ぐりぐりしてみましょう。

というか、正規表現って何なのさと思いながら激しく調べてみてください。
714704:04/09/26 20:35:15 ID:???
$text =~ s|.*<div align="left">(.*?)</div>.*|$1|s;

↑この行がさぱりです。

$text =~ s :$textの中身を置換する
| :or
.* :拡張子は問わない??

まず、なぜ 置換とそれ以降がorで分けられるのでしょうか??
715704:04/09/26 20:51:59 ID:???
>>マスター

.*<div align="left">(.*?)</div>.*

これの意味がなんとなくわかりますた!
拡張子全然関係ないですねm(_ _;)m

-----------------------------------------------------------------
任意の文字列の後に<div align="left">がきて(?不明)<div>がきて、
その後にまた任意の文字列
-----------------------------------------------------------------

で、あっていますか?
716nobodyさん:04/09/26 21:02:51 ID:???
いい加減スレ違いだから
717nobodyさん:04/09/26 23:16:27 ID:???
704を見て思ったんですけど、
外部ファイルの、改行の3つ目まで読み込む
にはどんな手順を踏めば出来ますか?
718nobodyさん:04/09/27 00:12:36 ID:???
>>717
forでいいじゃん
719717:04/09/27 00:18:45 ID:???
>718 forでどうすればいいか分からないです。。。
720nobodyさん:04/09/27 00:38:54 ID:???
>>719
ファイル操作,perlでググってこい
そして一回コード書いてから質問しろ
721nobodyさん:04/09/27 01:15:18 ID:???
>>704
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/pe_k08.htm
これを読みながら逆上がり10回出来ればわかると思うよ
722nobodyさん:04/09/27 01:23:16 ID:???
あ、書き忘れていましたが、外部記録ファイルの中身は1000行くらいあるので、全部読み込むのは避けたいんです。@buf=<IN>以外で3行だけ読む方法はありませんか?
723nobodyさん:04/09/27 01:26:10 ID:???
724nobodyさん:04/09/27 01:31:14 ID:???
声優が岩男潤子で
サリー・セイント・フォードか。
これは偶然なんですか!
725nobodyさん:04/09/27 01:31:37 ID:???
超誤爆
726nobodyさん:04/09/27 01:36:46 ID:???
>>722
1000行なんかなにも気にする必要ないぞ?
ファイルサイズ 50k とかでしょ?
10万行とかいかない限り、気にしてもしょうがない。
727nobodyさん:04/09/27 04:34:02 ID:77N/SlLL
はじめまして。
Perlのデータ受け取りに関しての質問です。

<input type="hidden" name="com" value="$in{com}">

の$in{com}部分に、改行を入れても、一般的に問題はないでしょうか?
htmlに

<input type="hidden" name="com" value="あ




">

のように記述しています。
あ\nい\nう\nえ\nお\n
のようにデータを受け取ってくれますでしょうか?
728nobodyさん:04/09/27 04:42:38 ID:???
質問する前にやってみればいいじゃん
729nobodyさん:04/09/27 07:54:57 ID:???
>>722
@buf[0..2] = <IN>;
730nobodyさん:04/09/27 08:54:55 ID:???
>>722
while(<>) {
exit if $. > 3;
print;
}
がいいんじゃあない?
731nobodyさん:04/09/27 10:56:24 ID:???
指定ディレクトリにあるファイル名一覧を配列に取得するのはどのように書けばいいでしょうか?
732nobodyさん:04/09/27 11:16:10 ID:???
>>731
とりあえずこんなとこだろう

opendir(DIR, $some_dir) || die "can't opendir $some_dir: $!";
@filenames = readdir(DIR);
closedir DIR;
733nobodyさん:04/09/27 12:20:51 ID:???
>>732
ありがとうございます!
家に帰ったら試してみます!
734nobodyさん:04/09/27 15:47:48 ID:???
CSVファイルを読み込んでそれをX件ずつ表示するプログラムを組みたいのですが
(Googleの次のX件とかみたいの)どういう風に組めばいいのかさっぱりわかりません。
参考になりそうなソースとかないでしょうか?
735722:04/09/27 16:50:03 ID:???
>723
出てきた出てきた^^;ググルって要らないサイトばっかマッチする糞検索鯖だと思ってました(ショボーン

>729>730
ものすごく簡潔で驚きました^^;;;
736nobodyさん:04/09/27 17:01:46 ID:???
はぁ…
737nobodyさん:04/09/27 17:30:22 ID:???
↓次の質問どうぞ
738nobodyさん:04/09/27 18:11:02 ID:???
>>735
帰れ^^;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;
739nobodyさん:04/09/27 18:48:57 ID:???
質問させてください。
サブルーチンからハッシュを返す方法がどうにもわかりません。
いろんなサイトをググってみたのですが、実際に試しても上手くいませんでした。

---------------------------------------------
%hashA = ("aaa","0","bbb","1","ccc","2") ;
%hashB = &hash_return() ;

print %hashA ;
print "\n";
print %hashB ; #←渡ってないので何も表示されない・・・(´・ω・`) ショボーン

sub hash_return{
%hoge = ("aaa","0","bbb","1","ccc","2") ;
return \%hoge;
}
---------------------------------------------
740nobodyさん:04/09/27 19:02:52 ID:???
sub hash_return{
%hoge = ("aaa","0","bbb","1","ccc","2") ;
return \%hoge; #★★★ この \ を取れクズ野郎 ★★★
}
741nobodyさん:04/09/27 19:06:26 ID:???
\%hogeで返すんなら、受け側は$hashBになるわな
742nobodyさん:04/09/27 19:06:40 ID:???
>738
うざい氏ね^^;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;





:イラネ(・△・)
743クズ野郎です:04/09/27 19:07:51 ID:???
おお?
それも試したはずなんですが・・・
ありがとうエロいおじちゃん! >>740
744nobodyさん:04/09/27 19:11:13 ID:???
負荷計測とかしたいのですが、やり方とかあるのでしょうか?
教えて!偉い人!
745nobodyさん:04/09/27 19:32:56 ID:j0XZIPtZ
無名配列の配列数を得るにはどうすればいいのでしょうか?
$#hoge だとエラーになります
746nobodyさん:04/09/27 20:14:02 ID:???
>>745
$#$hoge
747nobodyさん:04/09/27 20:34:39 ID:???
データのソートで悩んでます。

100の1
1000の2
100の3
500の1
1000の1
500の2
100の2

みたいに数字と日本語が混ざったデータを

100の1
100の2
100の3
500の1
500の2
1000の1
1000の2

にしたいのですが、<=> cmp どちらでやってもこのようになりません(当たり前なんですが…)。
どうやったらこんなソートが出来ますか?
748nobodyさん:04/09/27 20:44:35 ID:kQMIC0Dw
foreach(@chinko){

 my $seieki;

 $seieki++;

print "$seieki";

}

とやると毎回、$seiekiが1になります。

 my $seieki;

の部分、一般的には、$seieki=0;とするのが普通でしょうか?
my〜は数値をリセットするためにも使用するものなのでしょうか?
詳しい方がいたら教えて下さい。
749747:04/09/27 21:01:06 ID:???
力技(?)で解決しちゃいました。
100の1
1000の2

100.1
1000.2
のように日本語の部分を小数点にしてソートしてあとで小数点を日本語に戻しました。

もっといい解決策がありましたら教えてちょ。
750nobodyさん:04/09/27 21:15:45 ID:???
>>749
100の100と
100の2の大小関係は?
751nobodyさん:04/09/27 21:40:41 ID:???
>>747
print
  map "$_->[2]\n",
  sort { $a->[0] <=> $b->[0] || $a->[1] <=> $b->[1] }
  map [ /(\d+)/g, $_ ],
  qw(100の1 1000の2 100の3 500の1 1000の1 500の2 100の2);

>>748
my $count;
foreach (@data) { $count++; print $count }

print 1..@data;
752nobodyさん:04/09/27 22:58:40 ID:???
753nobodyさん:04/09/28 05:45:24 ID:pXXg1bBk
行数を減らすと処理速度は速くなるのでしょうか?
754nobodyさん:04/09/28 05:54:35 ID:???
試せ。
755nobodyさん:04/09/28 06:00:08 ID:???
ストップウォッチ持ったか?
真中のは時計のスイッチだぞ。間違えんな
756nobodyさん:04/09/28 06:09:05 ID:B5P8Vfsa
おはようございます。
現在win2kにてActivePerl-5.8.4.810-MSWin32-x86.msi
を入れて使っています。

9桁以上の10進数正数(例えば36089479532304)を
16進数変換したいのですが
$a = sprintf "%X", $a;
のようにすると8桁までしか変換できず、オーバーフローした場合はFFFFFFFFとなってしまいます。

どうにか9桁以上を変換できないものかと色々検索したのですが
みつからず・・お力を貸していただけないでしょうか。
アドバイスいただければ幸いです。
757756:04/09/28 08:06:42 ID:???
Hex(36089479532304);

sub Hex {
my $val = shift @_;
my @hx = (0..9,'A'..'F');
my $hex;
while ($val > 15) {
$hex = $hx[$val % 16].$hex;
$val = ($val - ($val % 16)) / 16;
}
$hex = $hx[$val]. $hex;
return $hex;
}

先ほどの9桁以上の10進数→16進数変換はこのような形でなんとか
いけました。

そしてもう一つの問題が・・
巨大整数計算なのですが
3164311364の二乗 3164311364**
みたいなことをやると
1.00128664083395e+019
のような形になってしまいます。
use bigint;

use Math::BigInt;
も宣言してみたのですが結果は同じです。
きちんとした整数を出してやるにはどうしたらよいのでしょうか。
1.00128664083395e+019に関してはオーバーフローしている部分が
019にはみ出しているのかと思い、
19100128664083395としてみたのですが
これでは二乗の答えになっていません。
758あぼーん:あぼーん
あぼーん
759あぼーん:あぼーん
あぼーん
760758:04/09/28 10:44:15 ID:???
>>759
サンクス。
助かりました。
761nobodyさん:04/09/28 13:20:00 ID:???
一般的にjcodeが一番負荷かかるのかな?
762nobodyさん:04/09/28 14:31:19 ID:???
>>761
わたくしがその難問に答えてしんぜよう。

で、jcode と何を比べた場合??
763nobodyさん:04/09/28 17:00:49 ID:???
>>757
「1.00128664083395e+019」とは、「1.00128664083395×10^19」の意味だ。
BigIntは使い方が間違っているのでは?
次のようにすると、「+10012866408339540496」と出力される。

use Math::BigInt;
my $x = Math::BigInt->new('3164311364');
print $x->bpow(2);
764nobodyさん:04/09/28 17:02:40 ID:???
小数点での四捨五入の処理について質問です。
(該当件数 / 合計件数)をパーセントで表示しようと思っています。
例えば、合計3件の該当1件ならば33.33333%となります。

# 小数点第二位での四捨五入処理
$percent = ($count / $total * 100);
$percent = $percent * 10;
$percent = (int ($percent + 0.5) / 10);

こうすると、33.3%となりますが、これを3回繰り返しても合計100%にはなりません。
割り切れない数(無限小数でしたっけ?)を含むパーセンテージが存在する場合、
合計を100%にするということは不可能なのでしょうか。
765747:04/09/28 17:40:11 ID:???
>>750
おっと、ドツボに嵌るところでした。
指摘サンクス

>>751
完璧です。
すばらしい!
ありがとうございましたぁあ!
766nobodyさん:04/09/28 20:15:27 ID:???
758-759
ってなにが有ったんだ?(w
767nobodyさん:04/09/28 20:52:52 ID:???
googleのURLエンコードされた文字列をeucに変換したくて色々とやっているのですがうまくいきません
perl4とunicode.plとjcode.plを利用しています
(jcode.pmの利用許可が下りませんでした)

#!/usr/local/bin/perl
require './unicode.pl';
require './jcode.pl';
$googleurl = "%E5%AE%9F%E9%A8%93";
$teststr = "実験";

$googleurl =~ s/%[0-9A-F][0-9A-F]/pack("C",hex($1))/eg;
@googleuni = &unicode::UTF8toUTF16($googleurl);
$googleurl = &unicode::u2e(@googleuni);
print "$googleurl\n";

としているのですが何も出力されません
768nobodyさん:04/09/28 21:32:44 ID:???
>>767
unicode.pl というのがコレの事なら
http://www.onicos.com/staff/iz/release/#unicodepl
Perl4 では動かない。
769nobodyさん:04/09/28 21:52:17 ID:???
>>766
電話番号の数字をある規則で文字に置き換えるプログラムとかいう
お題だったんだけど、サンプルに電話番号のような文字列が含まれ
ていたのであぼーんされたようです。
770767:04/09/28 22:22:13 ID:???
うわ、すいませんperl自体は5.005_03の様です・・・
/usr/binが先にパス通っててそっちでperl -vしてました・・・
771nobodyさん:04/09/28 22:25:55 ID:YPzWwkuA
コマンドラインの代用となるようなCGIスクリプト
を書こうと思ってます。
フォームから簡単なスクリプトを送るとその結果をブラウザに
返すようなプログラムです。

で、perlのスクリプト上でperlのスクリプトを評価するような
処理をしなければいけないのですが、どのように実現すればいいでしょうか?
772nobodyさん:04/09/28 22:48:54 ID:???
eval
773nobodyさん:04/09/28 23:06:43 ID:???
>>767
× $googleurl =~ s/%[0-9A-F][0-9A-F]/pack("C",hex($1))/eg;
○ $googleurl =~ s/%([0-9A-F][0-9A-F])/pack("C",hex($1))/eg;
774nobodyさん:04/09/28 23:13:04 ID:???
掲示板で、読むときCGIによる記録ファイル読み込みではなくHTML出力にして、書き込む時だけCGIを使うようにしたら多少は負担が減るんですか?
一定時間に@5人に1人が書くときA100人に1人が書くとき(チャット) で教えてください
775機種依存文字を使う奴は氏のう:04/09/28 23:18:25 ID:???
1. 読むときCGIによる記録ファイル読み込みではなくHTML出力にして、書き込む時だけCGIを使う
2. 読むときCGIによる記録ファイル読み込みではなくHTML出力にして、書き込む時だけCGIを使う
776nobodyさん:04/09/29 00:22:34 ID:???
フツーに考えれば掲示板だろうがチャットだろうがトータル負荷は減る。
だがしかし、ファイルが壊れるリスクを考慮すると、書き込み時の処理はシンプルにしたいところ。

よって掲示板には有効だが、ほいほい書き込みが発生するチャットには向かない。
777774名無し:04/09/29 00:39:19 ID:???
>775
すみません
>776
ありがとうございました
778nobodyさん:04/09/29 03:57:33 ID:6EqyI/FO
(1)変数へ代入する処理を減らす
(2)print "〜";文をなるべく1つにまとめる

みなさんはどちらを優先しますか?
またどちらの方が負荷は減るでしょうか?
詳しい方、意見お聞かせ下さい。
779nobodyさん:04/09/29 04:50:59 ID:???
そんなことはどうでもいいので
アルゴリズムの改善を汁
780nobodyさん:04/09/29 09:15:35 ID:???
>>779 に同意
CGIで一番負荷がかかるのはperl自身のプロセス起動
次はファイルの入出力
代入だのprintだのは誤差の範囲
781nobodyさん:04/09/29 09:27:47 ID:???
>>780
プロセス起動なんて軽くでけるん?
mod_perl使えってのは無しな(w

ファイル入出力は同意。
782nobodyさん:04/09/29 09:51:57 ID:???
いや、ファイル入出力はどのように入出力してるか見れば、あまり軽くは出来ないだろう。
と言うか、ファイル入出力を見直して軽く出来たら書いた人間が糞。
と言うわけで>>781 mod_perl使えw
783nobodyさん:04/09/29 10:24:02 ID:???
mod_perlも扱いが難しい。
掲示板程度のスクリプトでも長いこと動かしていると、プロセスの
メモリ占有量が馬鹿みたいに膨れ上がる。

グローバル変数はほとんど使わないように組んでるし、
my で宣言したものはスコープを外れた時点で解放して欲しいんだけど、
ちゃんと領域を回収してくれてないのかな。
そういえばPerlのGCって意識したことなかった。
784nobodyさん:04/09/29 10:24:05 ID:???
世の中の全ての
全てのPerlで書かれたCGIが
use strictしてあって
動いてたなら
世界はもっと平和だったのに
785nobodyさん:04/09/29 10:26:47 ID:???
>>781
肥え太った 5.6.x 以降を使わず 5.005_0x を使うと少しは
軽くなるかも知れない。Perl4 スタイルな小規模スクリプト
がメインなら、無闇に Apache::PerlRun で走らせるよりも
CGI にした方が軽い場合もある。

まぁ全てはケースバイケースだから、Apache Bench で
計るなりして最適な選択を。
786nobodyさん:04/09/29 10:30:04 ID:???
Apache BenchってDoS攻撃ツールじゃなかったの?
787nobodyさん:04/09/29 10:49:25 ID:???
>>783
PerlのGCは中での再利用はするけどOSには返さないって昔聞いた気が
する。ほんとかどうか知らんけど......
788nobodyさん:04/09/29 11:06:14 ID:???
>>787
Perlに限らず大抵の処理系はGCしてもプロセスが終了するまで
メモリをOSに返さないと思われ。
789nobodyさん:04/09/29 11:09:44 ID:???
例えば掲示板で記事を表示する時に

while(<TAKESI>){

($a,$b,$c,$d,$e,$f,$g,$h,$i,$k)=split(〜);

いろいろ表示

}

こういう処理がありますが
my($a,$b,$c,$d,$e,$f,$g,$h,$i,$k)=split(〜);
このようにmyを付けた方が処理は早くなるのですか?
みなさんは付けてますか?
790771:04/09/29 11:11:05 ID:2geLnUuH
>>772

ありがとうございます。
evalで検索かけたら
http://oshiete1.goo.ne.jp/kotaeru.php3?q=908814
というページも見つかりました。
791nobodyさん:04/09/29 11:18:50 ID:???
792nobodyさん:04/09/29 11:22:47 ID:???
print "あいうえお".($a-6)."かきくけこ";

こういうのってperl4でも使えるのかな
使ったら出来ちゃってるけど
793nobodyさん:04/09/29 12:26:13 ID:???
>>783
mod_perl の問題じゃないよ
794nobodyさん:04/09/29 13:11:59 ID:???
>>791
は?myはlocalより早いってとこ?
シンボルテーブルに登録されないから、グローバル変数や
local変数より早いって理解でいいでつか?
795nobodyさん:04/09/29 13:45:38 ID:???
localはブロックを出入りするときに元の値を退避して戻す
処理が入るのでさらに遅いのです。
796nobodyさん:04/09/29 14:05:03 ID:???
>>794-795
ひょっとしてここの人達って、ループ中のサブルーチン呼び出しを
インライン展開しなくちゃいけないくらい激しくチューニングしてるわけ?


>>793
mod_perl の問題じゃないんだとしたら、Apache::Registryモジュールのせい?
797nobodyさん:04/09/29 14:15:59 ID:???
頭のいい漏れはぜんーぶグローバルで書く。それが一番速い。
798nobodyさん:04/09/29 14:36:10 ID:???
>>797
ファイルの先頭でmyしてグローバルっぽく使う方が微妙に速いんじゃない?
799nobodyさん:04/09/29 14:51:18 ID:???
※※※↓次の質問ドゾー※※※
800nobodyさん:04/09/29 16:30:57 ID:???
なんか面白いことないんかか?とも思われるのでとりあえずこんなことを。
Perlのコンパイラって何言語で書かれてるの?おまら知ってる?
そもそもどうやってプログラムがうごくのかよくわかあんよな。
CGIいくら組んでも根本的な部分をしらないとだめだな。

ところでCSV形式って区切り子がカンマでしょ?まあ名前の通りだけど。
でも改行も区切り子になるの?

a,s,d
s,d,f

↑これとかってdとsがくっついたりしないの?まあPerlでは
open CSV "hoge.csv";
while ( <CSV> ){
chomp;
printf "大地%s 空%s 海%s <br>\n" ,split/,/;
}

ってchomp意味内やン家!なんか久しぶりにperlのコーディングでもしよ尾も運だすので
カメハネml?
801nobodyさん:04/09/29 17:07:47 ID:???
※※※↓>>1 をよく読んでから次の質問ドゾー※※※
802nobodyさん:04/09/29 23:53:39 ID:???
803nobodyさん:04/09/30 10:21:11 ID:???
オブジェクト指向は出来るだけ使ったほうがいいんですか?
804nobodyさん:04/09/30 10:30:29 ID:???
好きにしろよ
805nobodyさん:04/09/30 12:12:21 ID:???
質問です。
テキストフィールドに書かれた文字をファイルに保存しようと思っているのですが、
作成されたファイルを開くと、ファイルの先頭部分にNULL文字がセットされてしまいます。

$text = $FORM{"text"};
$text =~ s/\r\n|\r|\n/\n/g;
open (DATA, ">>$filename");
flock (DATA, 2);
seek (DATA, 0, 0);
print DATA $text;
truncate (DATA, tell (DATA));
close (DATA);
chmod (0666, $filename);

環境は ActivePerl5.6.1 IE6.0SP1 AN HTTP Daemon 1.42k でテストしていて、
ローカルですと正常にファイル保存がされるのですが、鯖に上げるとファイル先頭部分にNULL文字がセットされてしまいます。
どなたか考えられる原因をご存知の方はいないでしょうか。
806nobodyさん:04/09/30 12:40:43 ID:???
>>805
ご存知ではないので一般論で。

まず$textにNULL文字が入っていないか切り分けよう。
printする前に、$text =~ s/\0/<null>/g; とかしとけば
もしはじめからNULLが入っていれば見えるようになるはず。

あともう1つあやしいのは >> で開くとO_APPENDになるので、
OSによるかもしれないがどこにシークしていても必ず書き込み
はファイルの末尾からになってしまう。その辺の問題かも
しれない。

はじめから'>'で開けばその問題はないが、省略してるが実は
読み出しもやってるとするとその手は使えないので、長さ0に
truncateしてからprintするか、sysopen使って

sysopen(DATA, $filename, O_RDWR|O_CREAT) or die;

みたいにすれば回避できると思う。

807nobodyさん:04/09/30 12:54:35 ID:???
>>でopenしてseek(DATA, 0, 0)するのは無駄手間にしか見えないが。
808805:04/09/30 13:12:09 ID:???
返答ありがとうございます。
補足になりますが、テキストフィールドの内容をファイルに新規保存するだけのものでして、読み出しは行いません。
また、ローカルでテストする際のOSはWin2000Proです。
$text =~ s/\0/<null>/g;を試してみたところ、<null>という文字列は入りませんでしたので、入力内容にNULL文字はないようです。
>>でopenしてseekは無意味と言うことで、seekを外してみましたが、結果は変わりませんでした。
また、>でopenしてみたところ、正常に動作しました。

>>806,807氏、ヒントをありがとうございました。
809なちじょあ ◆yEbBEcuFOU :04/09/30 14:34:52 ID:???
( ● ・3・ ● ) エェー XREAでは広告入ると空行入るけど違うかNA
810なちじょあ ◆yEbBEcuFOU :04/09/30 14:35:18 ID:???
( ● ・3・ ● ) エェー あ、解決してたスマSO
811803:04/09/30 14:56:10 ID:???
>804
そうですか、友達に負担がかかるからやめろと言われましたが、騙されたようですね_no

もう一つ質問ですが、kent-webのCGIはダメポと聞きますが、Perlとしてどこがダメポなんですか?
812nobodyさん:04/09/30 15:05:59 ID:???
使ったこと無いから落としてみた。
出力されるHTMLのインデントとかはもう見てらんないな。
Perlについては詳しく無いから↓の人詳細よろ
813nobodyさん:04/09/30 15:20:43 ID:???
>>811
スレ違い
814nobodyさん:04/09/30 15:55:47 ID:???
>>811
そんなこと聞いてどうするよ?
kent最高だから使っとけ
ついでにレスキューも使っとけ
815811:04/09/30 15:58:51 ID:???
>812
トンクス!なるほど、たしかにすごいHTML…
>813
スマソ
>814
そうでつか
816nobodyさん:04/09/30 16:01:47 ID:???
>>811
お前向けのスレはここだ。

KENT WEB 総合スレ Part2
http://pc5.2ch.net/test/read.cgi/php/1078991985/
817nobodyさん:04/09/30 18:09:03 ID:???
使い勝手とかで選ぶんならkentだっていいだろう
ただしソースは見るなよ
818nobodyさん:04/09/30 20:00:11 ID:???
KENT陛下は厨にも見易いよう、わざと糞ソースをお書きになられておるのであります
819nobodyさん:04/09/30 20:00:36 ID:???
おまいら、MattさんのGuestbook使えよw
久しぶりにyybbs見たけど相変わらずザルだね
スパゲッティー度上がってるし
820nobodyさん:04/09/30 22:21:44 ID:ByT9cFMW
モジュールの中にある頭にアンダーバーがついてる関数っていうのは
そのモジュールの中でしか使わない関数っていうことでよかったですよね?
821nobodyさん:04/09/30 22:37:25 ID:???
>>820
そういうローカルルールを採用する人もいる。
しかし Perl は君が他人の私物を拝借しても咎めない。
822nobodyさん:04/09/30 22:41:23 ID:???
>>820
privateのつもりなのかprotectedレベルなのかは分かんないけどね。
823nobodyさん:04/09/30 22:59:24 ID:???
finalかも(ry
まあ820-821の理解で十分じゃね。
もともと印程度のいいかげんなものだし、
なんやかんやで読んじゃったりするし。
824nobodyさん:04/09/30 23:29:58 ID:???
>>821
他人の私物を拝借したら咎めるようにするモジュールもある
825nobodyさん:04/10/01 02:57:04 ID:???
<input type="hidden" name="foo" value="bar#hoge">
というのをform要素内の最後尾につけて、IDに対してののアンカーにしたいんですが、

〜foo=bar#hoge
とならず、
〜foo=bar%23hoge
とバケてしまいます。
どう記述したらバケずにできますか?
826nobodyさん:04/10/01 03:14:42 ID:???
何だかよくわからんがurlエンコードされてるだけかと
827nobodyさん:04/10/01 09:53:29 ID:???
>>825
生成されたHTML側でJavaScript使って飛ばせば?
828nobodyさん:04/10/01 10:26:24 ID:???
perlscriptでWEBブラウザからtracertやnetstat等、システムコマンドを使い、その結果を新しいウィンドウで表示したいのですが、
以下のようにしても結果が表示されません。表示する変数には実行結果の最後の行だけが入っている模様です。
他の方の質問と比べて低LVで申し訳ありませんが、お助けください_no

<html><head><title>TraceRoute</title></head>
<script language = "PerlScript">
sub button1_click{
$form = $window->document->form;
$host = $form->host->{'value'};
@traceroute = `tracert $host`;
$window->document->write("@traceroute");}
</script>
<body>
<h2>TraceRoute</h2><hr>
<form name="form"><table>
<tr><td>IPアドレス or ドメインネーム:</td>
<td><input type="text" name="host" size=50 value=""></td></tr>
</table><p>
<input type="button" name="button1" value=" 実行 " onclick="button1_click()">
</p></form></body></html>
829nobodyさん:04/10/01 11:09:56 ID:???
>825
アンカーくっつけるためのもんじゃないから無理
830nobodyさん:04/10/01 11:49:58 ID:???
>828
クライアントプログラミングはム板に逝ったほうがいい
831nobodyさん:04/10/01 11:57:33 ID:???
>827
JS使わんと無理ですか?
832828:04/10/01 12:14:58 ID:???
>>830
お手数掛けました。あちらで聞いてみますね。
833825:04/10/01 12:56:20 ID:???
渡されるアドレス内の#をバケさせない方法はないんですかね。
834nobodyさん:04/10/01 13:35:55 ID:???
835nobodyさん:04/10/01 13:46:06 ID:???
質問です。テキストフィールドに選択したテキストファイルを読み込んで表示させようと思っており、
選択されたファイルがバイナリファイルであればエラーを返す処理をしようと思っています。
しかしながら、テキストファイルにもかかわらずバイナリファイルと判定されてしまい、
ファイルを展開できないことがあります。

 opendir (DIR, ".");             # カレントディレクトリ
 while ($filename = readdir (DIR)) {
  if (-d $filename) {            # ディレクトリ
   next;
  }
  if (-B $filename) {            # バイナリ
   next;
  }
  push (@files, $filename); # ファイルの一覧
 }

全てが半角英数字のテキストの場合は、テキストファイルであると正常に判定されるようです。
選択したファイル内に2バイト文字があると-Bでは正確に判定できないのでしょうか。
836nobodyさん:04/10/01 14:35:28 ID:???
>>835
入ってるんだよ。バイナリコードが。ほら、そこにネ。
837nobodyさん:04/10/01 14:42:32 ID:???
>>836
わかんねぇカスはすっこんでろよ(pgr

>>835
JPerlが使えるのならば、そちらだと確か正常に動いたと思う。
ファイルを展開するんなら、ファイルを読みこんだ後、
表示させる前にNULL文字のチェックをしてみるのはどうだろうか。
拡張子を制限するとか、対策は色々あると思うぞ
838nobodyさん:04/10/01 15:00:34 ID:???
>>835
http://perldoc.com/perl5.8.4/pod/func/-X.html
シングルバイト文字圏の人が言う「plain text」は、マルチバイト文字は考慮
していない。use encodings 環境下とかでどうなってるかは知らないけど。
839nobodyさん:04/10/01 18:40:00 ID:???
携帯の絵文字(100個以上)を画像のURLに置換したいんですが、まとめて置換できませんか?今は1個1個(s//<img src=\/img\/001.gif>)でやっています…
840nobodyさん:04/10/01 19:45:04 ID:???
841825:04/10/02 00:17:02 ID:???
>>834
有難う御座います。
そっち行って聞いて見ます。
842nobodyさん:04/10/02 04:12:13 ID:???
foreachの逆ってありますか?
配列を後ろから読む、というような。
843nobodyさん:04/10/02 04:15:39 ID:???
>>842
ありません。
reverseで逆順に並べ替えれば済むし。
844nobodyさん:04/10/02 04:17:10 ID:???
>>843
即答ありがとうございます。
reverseですね。それを使うことにします。
845nobodyさん:04/10/02 06:14:55 ID:???
フォームの窓AからPOST > 窓Bに結果表示 > 窓Cを再読込

ということをしたいのですが…。出力したときにjavascriptを埋め込むとかでしょうか。うーん。
846nobodyさん:04/10/02 06:31:48 ID:iwLkYg8H
Active PerlをWin2000のC:\PerlにインストールしましたがCGIが動きません。
CGIはInetpub/cgi-bin/に置いています。
Prelのバージョンは多分5.6だと思います。
Perlへのパスは#!/user/local/bin/perlにしてます。
どうすればよいでしょうか?
ちなみにPerlインストール後は設定を何もいじってません。
よろしくお願いします。
847nobodyさん:04/10/02 06:56:22 ID:???
>>846
IISの設定は知らないがとりあえずPerlのパスは
#!C:/Perl/bin/perlだろ
#!/Perl/bin/perlでもいいかも
848nobodyさん:04/10/02 07:16:33 ID:???
>>846
httpdは?
Perlだけ入れてもCGIとしては動かんよ。
849nobodyさん:04/10/02 08:03:38 ID:iwLkYg8H
>>848
httpdってどこをどのように変更するのでしょうか?
よろしくお願いします。
850849:04/10/02 08:45:47 ID:iwLkYg8H
IISが入っているのですがhttpdが必要なのでしょうか?
851nobodyさん:04/10/02 08:55:46 ID:xWycr4I2
「iis perl」でググれば普通に情報が見つかるもんだが。
ttp://www.din.or.jp/~bigstone/cgilab/cgitips/iis.html

関係ないけどミケネコさんてお亡くなりになったのね。超ショック。
ご冥福をお祈りします。
852nobodyさん:04/10/02 09:12:09 ID:???
亡くなったのはミケネコ本人じゃなくてサーブル研究員らしい
853nobodyさん:04/10/02 09:15:32 ID:???
そですか。あのサイトはいろいろお世話になったから復活してほしい。
関係ないのでsage
854nobodyさん:04/10/02 09:36:37 ID:???
スレ違いスマソ。

>>852-853
全ての研究員の中の人をお一人でやっておられたという説もある。
コンテンツはまた公開されそうな気配。
http://pc5.2ch.net/test/read.cgi/hp/1092690398/121
855849:04/10/02 09:55:27 ID:iwLkYg8H
>>851
返信ありがとうございます。
早速サイトを見ます。
856nobodyさん:04/10/02 15:40:45 ID:???
>>845-855
スレ違いは誘導して他でやれ
857nobodyさん:04/10/02 19:17:38 ID:IDTr6xb8
Redhat9
apache2
/usr/bin/perl

↑の環境でperlを使ってるのですが、最近急に掲示板の表示速度が
激しく遅くなりました。
普通のhtmlは普通に表示される、servletも動いてますがそちらも普通。
perlの掲示板のみが激しく遅いのですが、原因追及の為にどこを
調べたらいいでしょうか?
858nobodyさん:04/10/02 19:33:14 ID:???
>>857
アクセス数,データの量等が影響するので、原因を特定するには情報不足だけど。多分設計の問題。
ありがちなのが、ログ等のデータをすべてメモリ上(配列など)に取り込んでるタイプの掲示版。
プロファイルとってみるといいよ。とりあえず続きは他のスレでどうぞ。スレ違い
859nobodyさん:04/10/02 20:09:46 ID:IDTr6xb8
>>858
レスどうもです。
どこのスレで聞いたらいいでしょうか?

cgiは以前は普通に動いてたんです。それからデータサイズも大して
変わってないので原因がよくわからないんです。
何もいじってないですし・・・
860nobodyさん:04/10/03 00:22:34 ID:???
>>859
だからプロファイルとってみるといいって書いてくれてるだろ
861nobodyさん:04/10/03 00:44:45 ID:???
>>860
それはわかってるんですけど、スレ違いってことなので
続きの質問はそっちでするべきなんでしょ?
862nobodyさん:04/10/03 00:49:57 ID:???
#!/usr/bin/perl -dDProf
でプロファイルとって、dprofppで解析か。
perlつーのは至れり尽せりだな。
863nobodyさん:04/10/03 01:05:09 ID:lnyRtEhY
とあるスクリプトにCMS.pmというのが入っていたのですが、
これって何の略で具体的にどういう役割なんですか?
864nobodyさん:04/10/03 01:30:02 ID:???
>>863
スレ違い
865nobodyさん:04/10/03 03:22:11 ID:???
>>863
Core Mettya Sugee
866nobodyさん:04/10/03 03:57:51 ID:???
LWPを使って行単位でファイルを読み込むことができるでしょうか?
867nobodyさん:04/10/03 04:22:11 ID:???
callback を使えば一定サイズ毎に区切って読み込むことはできるが
行単位にはならないだろうな

一旦普通に全部読み込んでから改行コードで分割しる
868866:04/10/03 04:25:29 ID:???
>867
ありがとうございました
869nobodyさん:04/10/03 07:12:49 ID:???
PerlでPDF扱いたいんだけどいい方法ない?
870nobodyさん:04/10/03 11:40:15 ID:???
>>869
PDF_lib
ライセンスには気をつけろ
871nobodyさん:04/10/03 12:04:16 ID:???
>>869
fpdfもあるでよ
872nobodyさん:04/10/03 12:24:14 ID:???
>>870-871
PDFをHTMLorTEXTに変換したいんですが
どちらが向いてますか?
873nobodyさん:04/10/03 13:09:12 ID:???
>>872
レポートよろしく。
874nobodyさん:04/10/03 14:28:22 ID:???
ほらな、スレ違いは相手にすんなって。
教わっても調べようとしない>>872みたいなバカしかいないんだから。
875nobodyさん:04/10/03 14:36:47 ID:???
>>874
つまらないレスつけるぐらいなら誘導してくれ
876nobodyさん:04/10/03 14:53:33 ID:???
>>862
#!/usr/bin/perl -d:DProf
だね
877nobodyさん:04/10/03 15:05:17 ID:???
>>875
そんなのはスレ違いの回答をしてるバカにやらせろ
つーか、お前がやればいいだろ
878nobodyさん:04/10/03 15:28:59 ID:???
>>877
文句ばっかり書いて暇そうなお前がやってくれてもいいじゃないか
俺は正しいスレがどこかわからん
879nobodyさん:04/10/03 15:41:21 ID:???
880nobodyさん:04/10/04 21:13:24 ID:???
eval関数の意味がググってもいまいち分かりません。
〜or〜と同じですか?またJAVAのtry catchと同じですか?
881nobodyさん:04/10/04 21:28:29 ID:???
えばるんだよ
882nobodyさん:04/10/04 23:06:02 ID:YvzQlu9k
下のURLで取得したHTMLファイルを読み込んで
コードや名称、取引値、前日比等を変数に取り出すには
どうすれば出来ますか?

http://quote.yahoo.co.jp/q?s=9646+9654+9684+9752&d=v1&k=c3&h=on&z=m
883nobodyさん:04/10/04 23:23:47 ID:???
>>882
おばさんをバイトに雇って、EXCELに入力させる。
884nobodyさん:04/10/05 00:58:46 ID:???
>>882
正規表現を勉強しれちよ
885nobodyさん:04/10/05 04:28:40 ID:???
>>882
まずお前に聞きたい。
URLを入力したら、HTMLを読み込むってことがお前にできるか?
886nobodyさん:04/10/05 04:55:02 ID:???
>>885
いや、それは誰でもできるんじゃないか?
ライブラリや関数を使えば。

perlもphpのように、ローカルファイルとネット上のURLのファイルを
表面的にでもシームレスに扱えるようにしてほしい。

LWPとか使うこと自体がだるいんだよ・・・
887nobodyさん:04/10/05 05:20:22 ID:???
>>886
あいつには無理だろ?
perlで
open IN,'http://2ch.net';とかしそうだし
888nobodyさん:04/10/05 07:28:09 ID:9Q+F9VOE
http://xxx.jp/?mode=0001
にアクセスした時に0001の画像を。
0002にアクセスした時は0002の画像を表示させたい思って、

if($FORM{'mode'} eq "0001"){$img = "01.gif";}
elsif($FORM{'mode'} eq "0002"){$img = "02.gif";}
elsif($FORM{'mode'} eq "0003"){$img = "03.gif";}
else{$img = "04.gif";}

print "<img src=\"$img\">";

と書いたんですけど出来ませんでした…。
どの番号にアクセスしても
04.gif
の画像が出てしまいます。
どうやったら上手くいくでしょうか?
お願いしますm(__)m
889nobodyさん:04/10/05 07:44:38 ID:/XKjVdNT
>>885

とりあえずは、ダウンロードツールとかブラウザでHTMLを取得して
ローカルファイルにしたものを処理対象にしようとおもってます

ソケットオープンしてGETすればできるんでしょうか?
890nobodyさん:04/10/05 07:54:11 ID:???
chankedと聞いて何も思い浮かばないなら素直にLWP::UserAgent使え
891nobodyさん:04/10/05 08:53:01 ID:???
open をオーバーライドしちゃいなさい。
892nobodyさん:04/10/05 09:51:59 ID:???
>>888
データ受け取れてますか?

$ENV{'QUERY_STRING'};
893nobodyさん:04/10/05 10:32:30 ID:???
>>892
データは受け取れてるはずだが
$FORM{'mode'}は空っぽだと思われる
894888:04/10/05 11:21:13 ID:9Q+F9VOE
確かにカラッポでした…
modeを使わないでそのまま$ENV{'QUERY_STRING'}と数字だけを使ってやった方が簡単でしたね。

ありがとうございましたm(__)m
895nobodyさん:04/10/05 12:05:45 ID:???
XP proマシンにIISとActive Perl入れて動作検証してますが、
次のようなエラーになってしまいます。
'c:\inetpub\wwwroot\cgi-bin\apply.cgi' script produced no output

webサーバーでは正常に動いているのですが、IISでディレクトリの設定を
変える必要があるのでしょうか?
IIS開いてみたけどよく分かりませんでした。
どこを変えればよいでしょうか。
※テキストファイルを書き出すプログラムを書いています。

よろしくお願いします。
896nobodyさん:04/10/05 12:20:39 ID:???
script produced no output でググればあるじゃん
897nobodyさん:04/10/05 13:37:28 ID:???
ロジックに関する質問いいでしょうか。
例えばこのようなフォルダ構造がある場合、
index.cgiが全ディレクトリ内のファイルの一覧を取得する事は可能でしょうか。

[root]
├ index.cgi
├ [data]
│  ├ [data_bak]
│  │   └ log.log
│  ├ data.log
│  └ data2.log
├ [file]
│  ├ file.txt
│  └ file2.txt
└ [img]
    ├ img.gif
    └ img2.gif

index.cgiでreaddirで一覧を取得し、その中にディレクトリがあれば、その中の一覧も取得し、
さらにその中にディレクトリがあれば・・・といった形の構造にしたいのです。
898nobodyさん:04/10/05 13:42:52 ID:???
>897
どうしたの?
899nobodyさん:04/10/05 13:43:53 ID:???
>>897
「ディレクトリ+再帰+PHP」でググれ

あとはディレクトリのパーミッションに気をつけること
900nobodyさん:04/10/05 14:15:07 ID:???
>>897
>可能でしょうか。
可能でしょう。
>・・・といった形の構造にしたいのです。
そういった構造で、可能でしょう。

プログラムとは、といった構造だと出来るのではないか、可能ではないか、
と考えて作り、動かしてみて、思った通りに行かなければ、
なぜそう行かないのかを探り、修正し、、、、
といった積み重ねで出来上がるものなのです。
901nobodyさん:04/10/05 14:31:18 ID:???
>>900
0から聞かれるよりかは、可能か不可能かだけを聞いてやり方を各自で模索してくれる方がありがたいのだが・・・w
902nobodyさん:04/10/05 14:37:12 ID:???
>>901
だから、実際書いて見てつまずいた所を
聞いてこなきゃ進まないわな。

可能ですか?…といった構造にしたいのです。
なら「可能です」で終わるよ。

たぶんこれ期待した答えじゃないよな。
といって具体的な質問でもないとすると、
そこまで考えてて、一から教えろって話?
903nobodyさん:04/10/05 14:43:17 ID:???
質問方法なんて質問者次第だからどーでもよくねぇ?
904nobodyさん:04/10/05 14:50:30 ID:???
>>1
905nobodyさん:04/10/05 14:54:11 ID:???
みんなログ保存はタブで分けてる?それとも<>で分けてる
一番いいのってなんだろ
906nobodyさん:04/10/05 14:57:47 ID:???
何のログだYO
その辺のヘボいBBSの名前欄とかにタブ文字入れるとログが壊れて面白いなw
907nobodyさん:04/10/05 15:01:03 ID:???
>>906
掲示板とかの

タブというかログ分けのコードを消去してない奴なんているのか
908nobodyさん:04/10/05 15:04:51 ID:???
俺は<>かな。理由は2chがそうだからってだけ。
909nobodyさん:04/10/05 15:09:13 ID:???
俺はオブジェクトのまんまdump
910897:04/10/05 15:56:46 ID:???
成功しました。
サブルーチンの中でサブルーチンを呼んで、、、という方法だったのですね。
ヒントを下さった>>899氏、ありがとうございます。
911nobodyさん:04/10/05 16:53:35 ID:eG43Pgsa

BEGIN{
if ( $ENV{'REMOTE_ADDR'} eq '127.0.0.1' ) {
push @INC, 'C:\Program Files\Apache Group\Apache\htdocs\public_html\cgi-bin';
}else{
push @INC, '/home/public_html/cgi-bin';
}
}

サーバでもローカルでも問題なく動かせるようにするために、自作のモジュールの場所を
上記のようにやってみた。しかしローカルでエラーが出た。多分プロンプトからやると
アドレスがおかしなことになるからだと思う。

どうやればいい?
912nobodyさん:04/10/05 17:11:26 ID:???
>>911
BEGIN {
  push @INC, defined $ENV{'REMOTE_ADDR'} && $ENV{'REMOTE_ADDR'} ne '127.0.0.1'
    ? '/home/public_html/cgi-bin'
    : 'C:\Program Files\Apache Group\Apache\htdocs\public_html\cgi-bin'
}
913911:04/10/05 17:19:18 ID:eG43Pgsa
>>912
そうかdefinedか。
しかし&&ではなく||じゃないか?
まあ俺が間違ってそうだからテストしてみる
914911:04/10/05 17:23:40 ID:eG43Pgsa
う〜ん
&&だとローカルで成功
||だとサーバで成功

どちらも不完全・・・orz
915911:04/10/05 17:29:18 ID:eG43Pgsa
もしかしてSSHでには対応できてない?
サーバでもできるっていうのはサーバにシェルでつないで
perl -c
でっていうことなんだけど、それは無理かな?

判断基準がないのかな?REMOTE_ADDRだけでは無理だよね。
916nobodyさん:04/10/05 17:31:40 ID:???
アホか・・・
917nobodyさん:04/10/05 17:33:49 ID:???
>>915
じゃあ
$ENV{'DOCUMENT_ROOT'}
とか使ってみたら?俺の場合はローカルではc:始まりだけどサーバでは/usr始まりだから
それで簡単にできるけどね。
918nobodyさん:04/10/05 17:35:13 ID:???
HTTP_HOST
919915:04/10/05 17:35:49 ID:???
>>917-918
さすが!ありがとう。
920nobodyさん:04/10/05 17:38:32 ID:???
すみまそん・・・初歩的な質問で恐縮なのですが
コマンドプロンプトにPerlの構文を直接打っても機能するということを
もききにはさんだのですが、どうやればよいのでしゅか?
921nobodyさん:04/10/05 17:42:52 ID:???
perl -e "print 'nullpo';"
922920:04/10/05 17:46:37 ID:???
>>921
ありがとうございます。できましたけど失礼しますm(_ _)m
「ガッ!」

ところで10行くらいになる場合はどうやればいいのでしょうか?
print -e "
ここdEnterを押すと何故かキャンセルされてしまうのですが。
あと print =e "
このダブルクォートは他の記号で代替できませんか?
923911:04/10/05 17:56:43 ID:eG43Pgsa
>>916
やっぱ無理かな?
>>917-919
自演?
コマンドプッロンプオ上では環境変数持ってないからそえではだめなのよね。
924nobodyさん:04/10/05 18:01:54 ID:???
>>922
> ところで10行くらいになる場合はどうやればいいのでしょうか?

何が10行くらいになるのよ?perlのコード?出力?
perl -e "print qq/a\n/; print qq/b\n/; print qq/c\n/"

> このダブルクォートは他の記号で代替できませんか?

あんたの使ってるシェルによる。シェルの話は板違い。
925nobodyさん:04/10/05 18:02:35 ID:???
$ENV{'GATEWAY_INTERFACE'}
926nobodyさん:04/10/05 18:04:16 ID:???
>>923
手探りしてないでそれぞれの環境で
環境変数吐き出させて違いを調べたらどうよ。
927920:04/10/05 20:00:39 ID:???
>>924
windowsXPです。

>何が10行くらいになるのよ?
つまり

print 1;
print 2;
print 3;
print 4;

のような時に見栄えのために改行をしたいのですが、-eでやるとenterは実行になってしまって
改行にはなりません。

いわゆるmysqlでのEnterキーの昨日を求めています。
928nobodyさん:04/10/05 20:08:22 ID:???
>>927
C:\hogehoge\>perl
print "(゚д゚)";
print "<";
print "シメジ\n";
^Z ← Ctrl + Z
(゚д゚)<シメジ
C:\hogehoge\>

> いわゆるmysqlでのEnterキーの昨日を求めています。
( ゚д゚) ?
929nobodyさん:04/10/05 20:18:28 ID:???
>>928
^D では。cmd.exe だとどうかは知らんけど。
930920:04/10/05 20:20:57 ID:???
>>928
よくわかりません・・・
全然できないです
931nobodyさん:04/10/05 22:26:00 ID:???
例えば掲示板において強制改行されない半角文字
(いわゆるテーブルのデザインを崩す文字)
は正規表現でどう表せますか?

ピックアップしてみましたが
\ ^ . $ * ? | ( ) [ ] { }
0-9 a-z A-z
これで全部でしょうか?
932nobodyさん:04/10/05 22:30:16 ID:???
もぅ半角全部でいいじゃん
933nobodyさん:04/10/05 22:52:49 ID:???
>>931
HTML やブラウザの話は Web 制作板で。
http://pc5.2ch.net/hp/
934nobodyさん:04/10/06 00:12:28 ID:???
環境変数について質問です。
perl では ASP で言う ALL_HTTP に相当するものは無いんですか?
仕事のテストの都合でクライアントのリクエストを画面に出力したくて

print <<EOF;
Content-Type: text/html

<HTML>
<HEAD>
</HEAD>
<BODY>
$ENV{'ALL_HTTP'}
</BODY>
</HTML>
EOF

↑のようにコードを書いたんですが、何も出力されなかったので。
どなたかお知恵を貸してください。お願いします。
935nobodyさん:04/10/06 00:25:27 ID:???
すみません、環境変数では無理だったようです。
お騒がせして申し訳ありませんでした…。
936nobodyさん:04/10/06 00:30:44 ID:???
my $test = 'localhost/hoge/';

print "ここのURLは$testtest.cgiです";

みたいな時にコンパイラが間違わないように変数名をはっきりさせるにはどうすればいいですか?

print "ここのURLは{$test}test.cgiです";
勘でやりましたらエラーになりました;
937nobodyさん:04/10/06 00:38:18 ID:???
>>936
> 勘でやりましたらエラーになりました;
${勘に頼るな、マニュアル嫁}
938nobodyさん:04/10/06 01:18:41 ID:???
print 'ここのURLは'.$test.'test.cgiです';
939nobodyさん:04/10/06 01:46:09 ID:???
>>937
やっぱそれしかないか。
>>938
ヒアドキュメントないだったりするからね
940nobodyさん:04/10/06 02:02:59 ID:???
それしかないかって試しもせずに質問したのかよ。
しかも後出しで日亜ドキュメントとか・・・
941nobodyさん:04/10/06 02:06:12 ID:???
それしかないかって言われて気づいたんだろ
942nobodyさん:04/10/06 07:17:50 ID:???
>>937の意味が分かってなくて、「勘に頼るな、マニュアル嫁」に対して「やっぱそれしかないか」って言っただけだろ。

>>936
print "ここのURLは${test}test.cgiです";
943nobodyさん:04/10/06 08:07:40 ID:JNRSDhvA
>>895です
script produced no outputでググってみたけど
参考となる答えが見つかりませんでした。
参考となるサイトありましたら教えてください。
おねがいします。
944nobodyさん
>>943
ウソつけ。
ぐぐったら答えはいくつも見つかったぞ。
見つかるサイトをもっとよく読め。
ついでに、スレ違い。