【Perl】初心者コーナー Part12

このエントリーをはてなブックマークに追加
1nobodyさん
 
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。

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

1と3が無いと誰も答えられないよ、良い回答は良い質問から。
一緒に勉強しましょう。

CGIの質問は【CGIだけどなんか質問ある Pert 6 】
http://pc.2ch.net/test/read.cgi/php/1019561283/
参考書籍の話題は【【Perl,CGI】参考書籍 第2版 】
http://pc.2ch.net/test/read.cgi/php/988809842/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般】
http://pc.2ch.net/test/read.cgi/php/991313362/
スクリプトの改造依頼は 【スクリプト改造工房 Part4 】
http://pc.2ch.net/test/read.cgi/php/1012839651/

過去ログ、その他の役立ち情報は>>2-10を見よう。
 
2nobodyさん:02/04/27 23:17 ID:1NNXdNsp
3nobodyさん:02/04/27 23:17 ID:1NNXdNsp
[総合]
 ・Perl Com: http://www.perl.com/pub/
 ・CPAN.com: http://search.cpan.org/
 ・ActivePerl: http://www.activestate.com/
 ・CGI-ML:http://forest.ne.jp/cgi-ml/
[お薦め]
 ・Perl Recipes: http://www.effectiveperl.com/recipes/
 ・Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm
 ・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/
[Document&Tutorial]
 ・Perl News: http://www.news.perl.org/
 ・Perl Monks: http://www.perlmonks.org/
 ・PerlMonth - Online Perl Magazine - : http://www.perlmonth.com/index.html 接続不能
 ・use Perl All The Perl: http://use.perl.org/
 ・Learn Perl - Perl Education: http://www.devdaily.com/perl/edu/index.shtml
 ・Perldoc.com: http://www.perldoc.com/
 ・Using Perl5 in Web: http://docs.rinet.ru/Using_Perl5_in_Web/
 ・Rex Swain's Home Page: http://www.rexswain.com/
 ・Robert's Perl Tutorial: http://www.netcat.co.uk/rob/perl/win32perltut.html
 ・Perl Tuts: http://savage.net.au/Perl-tutorials.html
 ・Beginning Perl Tutorials: http://www.pageresource.com/cgirec/index2.htm
 ・jcode.pl の私的な解説書: http://www.mikeneko.ne.jp/~lab/kcode/jcode.html
 ・Logical Choice Software, Home Page: http://www.logsoft.com/perltips/
 ・Perlfect Solutions: http://perlfect.com/
 ・The Perl Archive : http://www.perlarchive.com/
 ・Perl6 & Parrot VM についての情報: http://dev.perl.org/perl6/
4nobodyさん:02/04/27 23:17 ID:1NNXdNsp
[Module]
 ・Perl Module Reference: http://www.bekknet.ad.jp/~bero/docj/module_/
 ・PPMPackages: http://www.activestate.com/PPMPackages/
 ・河馬屋二千年堂's Page: http://member.nifty.ne.jp/hippo2000/index.htm
[Security]
 ・安全なプログラミングのためのガイドライン:http://www.FreeBSD.org/ja/security/#spg
 ・Perl security:http://www.perldoc.com/perl5.6/pod/perlsec.html
 ・Perl security和訳:http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlsec.html
 ・CGI and Security http://www.ansi.co.jp/tech/cgi/security/
 ・The Unofficial Web Hack FAQ:http://www.nmrc.org/faqs/www/
 ・How to Write Secure Code:http://www.shmoo.com/securecode/
 ・Safe CGI Programming :http://www.improving.org/paulp/cgi-security/safe-cgi.txt
[OS]
 ・Linux日本語マニュアル:http://www.linux.or.jp/JM/
 ・FreeBSD日本語マニュアル:http://www.jp.freebsd.org/man-jp/
5nobodyさん:02/04/27 23:32 ID:???
>>1
乙カリー
6nobodyさん:02/04/27 23:41 ID:???
キーボードから文字数を制限して入力するにはどうすればいいのか教えれ。《ら抜き表現》
7hanamogera ◆kkkKkkko :02/04/27 23:49 ID:zKZtkfuA
りげなく・・・漏れが作った携帯端末掲示板スクリプトを公開。
あんまり激しく叩かないで〜
http://www.sgmt.jp
8nobodyさん:02/04/27 23:57 ID:???
>>7
      ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    (∩・∀・)< もしもし…何がしたいのかもうちょっと具体的におながいします
□……(つ   ) \___________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|

textareaに書かれた文字数をcgiにわたる前にチェックしたいということかな?
9nobodyさん:02/04/27 23:58 ID:???
>>8
>>7じゃなくて >>6だった。hanamogeraさん失礼
10nobodyさん:02/04/28 00:04 ID:???
11pear ◆FRUIT8pk :02/04/28 00:07 ID:???
>>8
カワ (・∀・) イイ!!
12nobodyさん:02/04/28 00:47 ID:???
で、結局前スレ975は何が聞きたかったんだ?
13nobodyさん:02/04/28 01:28 ID:???
聞いてアロエリーナ ちょっと言いにくいんだけど
2年前Perlに挫折して、VBS、PHPやってきたんだけど
昨日 Perlのリファレンス読んだら 理解できたの
ちょっとうれしいな!
聞いてくれてあーりがと アロエリーナ♪
\______ ________/
          |/
         ∧_∧
   Ψ     (∀・  )
   □     (∩∩  )
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
14nobodyさん:02/04/28 01:49 ID:???
perlは挫折する部分がありません。
15nobodyさん:02/04/28 01:59 ID:???
>>14
型なし言語でクラスのまねごとし始めた時点で萎えました。
今後はObjectPascalで行こうかと考え中。
16nobodyさん:02/04/28 02:16 ID:???
Perl6まで待ってくれ。
17nobodyさん:02/04/28 18:19 ID:???
いつまで?
18nobodyさん:02/04/28 21:44 ID:???
オープンしたファイルは、プログラムがexit;で終了するとcloseしなくても、勝手にクローズされるのでしょうか?
19nobodyさん:02/04/28 22:14 ID:9I+rPdRi
>>18
クローズされます。
exit 以外でも、終了するとクローズされます。
20継続:02/04/28 22:20 ID:???
1. if ($string eq "hoge") {
2. if($string eq "hoge"){
3. if ( $string eq "hoge" ) {
4. if( $string eq "hoge" ){
どれが好きですか?細かいけど

1と4が一人ずつ
21_gunzip:02/04/28 22:31 ID:???
>>20 1でふ。
Perl6では、if/for/foreachなどの()は必要なくなりますが...。
22nobodyさん:02/04/28 22:44 ID:???
>20
制御構造では空白を挟むのが一般的。(if, while, foreach, for ...)
パーレン中の両端は普通空白を入れない。(*)
よって「1」。

(*)条件式が複雑で、パーレン中の端に空白を入れた方が見やすくなる場合は
そうするかもしれない。
23nobodyさん:02/04/28 23:12 ID:???
>>19
ありがとうございます。
24nobodyさん:02/04/28 23:16 ID:???
全角の文字列の一文字おきに、何か記号を付け加えるにはどうすればよいのでしょうか?

お願いします

お<>願<>い<>し<>ま<>す<>

こんな感じにしたいのですが。
25nobodyさん:02/04/28 23:24 ID:???
>>24
文字コードは?
26nobodyさん:02/04/28 23:30 ID:???
EUCに変換して
s/([\200-\377]{2})/$1<>/g;
27nobodyさん:02/04/29 00:30 ID:???
>21
Perl6 じゃなくても if/for/foreachなどの() が必要とは限らないだろ!

`kill -KILL _gunzipのPID` if $user eq '_gunzip';

>24
環境の文字コードを早く書け、ボケ!
28nobodyさん:02/04/29 00:31 ID:pMsSvLdB
質問なんですが、ハッシュのすべての要素に関して
添え字と値両方を操作したいんです。
例えば配列@aのすべての要素に関して
foreach $_ (@a) {print "添え字=$_";}
こういう感じのことを添え字が予めわからない場合
どのようにしたらいいでしょうか。
29nobodyさん:02/04/29 00:37 ID:???
>>28
keys
each
などなどを検索
30nobodyさん:02/04/29 00:39 ID:???
ありがとうございます!
調べてきます。
31nobodyさん:02/04/29 00:53 ID:???
>>26
ありがとうございます。
sjisにも対応させるには
s/([\200-\377][\000-\377]|[\000-\377])/
でいいのでしょうか。
やってみたところ無事に動いてるっぽいのですが。
32nobodyさん:02/04/29 01:06 ID:???
33nobodyさん:02/04/29 01:24 ID:???
ここって、初心者がくるところなんだぁ。 なんか安心した。

で、どういうことを質問すればいいの?
34nobodyさん:02/04/29 03:02 ID:???
(´-`).。oO(>>33 あなたが 12〜15歳の女性なら、全身写真うpしてから話そうよ…)
35nobodyさん:02/04/29 03:32 ID:???
Part11もうdat落ちしているよ… なんなんだ一体
36nobodyさん:02/04/29 03:55 ID:???
ひろゆきはお金儲けに必死
37nobodyさん:02/04/29 05:40 ID:???
過去ログ読めって言えないね…。
Part9、10はまだHTML化されてないし。
38nobodyさん:02/04/29 05:56 ID:Ff1dM8JC
初心者の質問なんですが、HTMLファイルに直接、JavaScriptを書いて
IEで表示させると動くのに、それをCGI上でPerlで出力させたHTML文の中に
同じJavaScript(WSHでもいい)を書いて表示させると、ブラウザの
ステータスバーに「実行させたけどエラーになりました」という表示が
出て、期待通りの動作が起きないのは何故なのか、ご存知の方います?

39nobodyさん:02/04/29 06:27 ID:???
>38
出力は期待通りにされてるの?
40nobodyさん:02/04/29 08:54 ID:???
27に反応してください。おねがいします。
41nobodyさん:02/04/29 08:56 ID:???
>>21 = Perl初心者
42nobodyさん:02/04/29 09:21 ID:???
>>40
21もそれくらいは分かっていると思うのだが。
43pear ◆FRUIT8pk :02/04/29 09:38 ID:???
>>20
2!!
44nobodyさん:02/04/29 09:49 ID:???
>36
儲かってますが、なにか?
45nobodyさん:02/04/29 09:59 ID:???
>>27
for()、foreach()の()を外した例もキボン。
46nobodyさん:02/04/29 10:11 ID:???
修飾のばあいは()をはずせるが。
exp for @array;
exp foreach @array
exp if $str eq "hoge"

>>21 はPerl6では
foreach @array -> $item {
    exp
}
if $str eq "hoge" {
    exp
}
とかくようになる、ということを言いたかっただけだと思われ。
(つーか、修飾句の場合()を外せることぐらいgunzipは知ってるだろ.do-demoiigana)
4746:02/04/29 10:14 ID:???
間違えた。Perl6でもifの場合は()がいるな。鬱だ
4846:02/04/29 10:18 ID:???
やっぱり必要ないな。>>46のままでよし
朝から連続ですまんな。
49pear ◆FRUIT8pk :02/04/29 10:20 ID:???
>>46
うん、ソレだ!
50nobodyさん:02/04/29 10:28 ID:???
ああ、PerlもC++と同じ間違った道を歩むのか・・・。
51nobodyさん:02/04/29 10:29 ID:???
>46
_gunzip さん、わかりやすい解説ありがとうごさいました。

わざわさ _gunzip を gunzip と書いて別人になりすますあなたのやさしさ、
たしかにわたくしの胸を打ちました。

今後ともよろしくおながいします。
5246:02/04/29 10:32 ID:???
最後の部分で擁護するようなことを書いたから>>51みたいなアフォを呼び込んだか。
まあ、どーでもいいや。せいぜい頑張ってくらはい。
53nobodyさん:02/04/29 10:37 ID:5LS+M/ng
叩かれて当然です。
54nobodyさん:02/04/29 10:38 ID:???
>>51
だよねー。 いつもの _gunzip さんの手口ね。

この板を盛り上げようとする心意気はわかるけど、名前を変えては煽ったり
するのってもうやめたほうがいいんじゃなーい? そのほうが人が戻ってくる
ように思うのはわたしだけじゃないでしょ?
55藁藁藁:02/04/29 10:40 ID:5LS+M/ng
とりあえず、俺が居る限り消えてください。

こいつの1レスごとに、俺が50レスで荒らします。
そんなことになったら、他の人も困るでしょ?
56あぼーん:あぼーん
あぼーん
5745:02/04/29 10:49 ID:???
>>45の回答もよろしくお願いします。
58nobodyさん:02/04/29 10:49 ID:???
>52
あまりにも本質をついてしまったから、動揺しちゃったね。

>54
冷静に見てる人もちゃんといるんだね。
59nobodyさん:02/04/29 10:52 ID:???
>>20
おれは1だな
60nobodyさん:02/04/29 10:55 ID:???
52=54=58
と、おきまりのを書いてみるテスト。
さて、どんな言い訳が返ってくるか(藁)
それとも、おれが_gunzip認定されたりして。
61nobodyさん:02/04/29 10:58 ID:5LS+M/ng
aaaaaaaaaaaaaa
62nobodyさん:02/04/29 10:58 ID:5LS+M/ng




とりあえず、ウザイ
63>>21:02/04/29 10:59 ID:5LS+M/ng
このスレ、もう駄目だね。誰かのせいで。
64あぼーん:あぼーん
あぼーん
65nobodyさん:02/04/29 11:30 ID:???
>>35
dat落ちを防ぐには850で次スレに移行とかしたほうがいいのかねー
66nobodyさん:02/04/29 11:32 ID:???
>>65
そんな気がする。
67nobodyさん:02/04/29 12:23 ID:???
>>65
だろうね。トレンド語るようなスレなら1000ゲトーしても
良いかも知んないけど、質問系スレは900逝く前に移行して
新しくスレ立つごとにうまくageてれば良いと思う。
68nobodyさん:02/04/29 12:32 ID:???
あまり無いような状況だけど例えば
A,B,C,D,E,Fって処理があってどれもお互いカブってないような状況なら
サブルーチン化して&A;・・・&F;ってやるのと
ただABCDEFって並べるのなら処理速度的に後者の方が良いんですかね?
69nobodyさん:02/04/29 12:45 ID:???
>>68
うん。目に見える違いが出るかどうかはさておき。
70nobodyさん:02/04/29 12:57 ID:???
>>68
ちなみに、本当にサブルーチンをばらして並べる人がいたら、
漏れはその人とは一緒に開発したくない。
71nobodyさん:02/04/29 13:00 ID:???
>>70
そなの? 漏れは長くなりすぎる場合は機能の区切りがいいところで分けちゃうけど……
7270:02/04/29 13:06 ID:???
>>71
言葉足らずだったかな?
「サブルーチンをばらしてABCDEFって並べる人がいたら、 」
73nobodyさん:02/04/29 13:27 ID:???
ずーっとひととおりあちこちまわってみたけど、どこもかいてあることが
むずかしくてわっかりませーん。

ここ初心者のとこでもむずかしいのねぇ。 びっくりさぁね。
みなさんのレベルで初心者って、、、はぁ。 もう、わけがわかりません。
74nobodyさん:02/04/29 13:41 ID:kMaPAu7S
>>20
()内が単純なものなら2、複雑で読みにくくなったら4です。
スペース打つのがめんどいのと、極力横幅を縮めたいので。
75nobodyさん:02/04/29 13:57 ID:???
gifcat ってあるじゃん? gif画像くっつけるやつ。

標準モジュールの中にそれってあるのか? だれでもいいから早めに答えろよ、
こっちはいそがしいんだからな。

いっとくが、とほほが配布してるやつはよせよ。うまくくっつかんからな。

それ以外でくっつける方法とかしってるやつがいたらもったいぶらないで教えろや。

76nobodyさん:02/04/29 14:42 ID:???
>>75
それが人に教えてもらう態度か氏ねや
77nobodyさん:02/04/29 14:47 ID:???
┌──────────────────────―─┐
│                                    |
│                                    |
│                                    |
│                                    |
│                /■\                    |
│               (´∀`∩)                   |
│               (つ  丿                |
│                ( ヽノ                    |
│                し(_)                |
│                                    |
│             Now Onigiring. ...               |
│                                    |
│         大変見苦しい場面がありました。 .       |
│         そのままおにぎりでお待ちください。.        |
│                                    |
│                                    |
└───────────────────────―┘
78nobodyさん:02/04/29 15:31 ID:s0WzG4fn
そのサブルーチン内しか使わないような変数も全部my宣言した方が
良いんですか?例えばクッキーの要素とか。
79nobodyさん:02/04/29 15:47 ID:???
>>78
もちろん。(例えば、で"クッキーの要素"を出すのはよく判らないが)
なるべく変数の有効範囲を狭くしたほうがいいかなと思うけど。
8078:02/04/29 15:54 ID:???
>>79
ありがとう。疑問解決したよ。何か俺の説明が悪かったね。
クッキーの要素ってのは、よく配布CGIスクリプトとかでよく見る
($year,$month,$week,・・・)みたいな奴のスカラ変数部ってこと。
81nobodyさん:02/04/29 16:11 ID:q+P1YCSQ
フォームメールCGIでメールアドレスを登録してもらうときに全角英数字で
入力する人がいるので、全角英数→半角英数に自動で変換させたいんですが
どんなふうにすれば良いでしょうか?
82nobodyさん:02/04/29 16:18 ID:???
>>81
jcode.pl 使っての変換ならこれかと
http://www.din.or.jp/~ohzaki/perl.htm#JP_Z2H
8381:02/04/29 16:21 ID:q+P1YCSQ
>>82
ありがとうございます!
84nobodyさん:02/04/29 18:37 ID:???
ょぅι゛ょ
85nobodyさん:02/04/29 19:20 ID:NmdFgil6
ba0ka
86nobodyさん:02/04/29 22:00 ID:NmdFgil6
こてはんはおえ
87nobodyさん:02/04/29 22:19 ID:5LS+M/ng
このスレッドにコテハンが書き込み次第、このスレを処刑します。
88コテハン:02/04/29 22:20 ID:???
コテハンですが何か?
89nobodyさん:02/04/29 22:22 ID:5LS+M/ng
今までに、コテハンが書き込んだログはすべて削除依頼を出してください。
これは命令です。
90_gnuzip:02/04/29 22:59 ID:???
これあげるから、成仏してね。

@in1 = (0,1,2,4,5);
@in2 = (6,7,8);

@c = &sum(\@in1,\@in2);

print join(',',@c),"\n";

sub sum {
 my($a,$b,$i,@ret,$n) = @_;
 $n = $#{$a} > $#{$b} ? $#{$a} : $#{$b};
 for($i=0;$i<=$n;$i++) {
push(@ret,${$a}[$i] + ${$b}[$i]);
 }
 return @ret;
}
91nobodyさん:02/04/29 23:35 ID:???
汚いコードだな。いかにも厨房らしい。
92_gnuzip:02/04/29 23:46 ID:???
>>91
リアル厨房ですが、何か?
93nobodyさん:02/04/29 23:49 ID:???
いや、分かってるって。
知恵遅れは消えたら?
94nobodyさん:02/04/29 23:53 ID:???
騙っても、書くコードのレベルでばれる、とか書いたら本人認定ですか?
95_gnuzip:02/04/29 23:57 ID:???
>>94
騙ってませんが。
96_gnuzip:02/04/29 23:59 ID:???
>>94
認定(w
つーか、本人は前スレ475でちゃんと書いてるしね。
97_gnuzip:02/04/29 23:59 ID:???
>>95
騙ってるじゃん・・・
98_gnuzip:02/04/30 00:01 ID:???
>>97
私がホンモノですが。
99_gnuzip:02/04/30 00:03 ID:???
このスレッド専用の名無しさんです。
100_gnuzip:02/04/30 00:04 ID:???
くそー、オレのコテハンがぁ(泣
101_gnuzip:02/04/30 00:07 ID:???
>>100
なにか一席どうぞ。
102100:02/04/30 00:16 ID:???
>>101
朝練あるんで、もう寝ます。
103nobodyさん:02/04/30 00:17 ID:???
75の質問にだれも答えてないじゃないか! なにやってんだよ、役立たずが
多いスレなのか?

90のような低レベルなこと書いてる場合じゃねーだろ!

こっちはいそがしいんだよ。 もうすこしだけまってやるからはやくしろよ。
役立たずどもはどっかいっちまえ。
104nobodyさん:02/04/30 00:38 ID:???
(´-`).。oO(>>103 はカルシウム不足かな?…)
105nobodyさん:02/04/30 01:04 ID:???
(´-`).。oO(カルシウム不足には牛乳だよな。_gyunyuなんちって…)
106nobodyさん:02/04/30 01:08 ID:???
"_"には何の意味が。
107_nobodyさん:02/04/30 01:10 ID:???
>>106
最新流行の予感。
108_nobody:02/04/30 01:11 ID:???
くそっ
先を越された
109nobodyさん:02/04/30 02:16 ID:???
>103
引きこもりに忙しいとかあるの?
110nobodyさん:02/04/30 11:36 ID:???
なんか妙に荒れてんなぁ。
煽ってるのはいつものように一人だとは思うが…。
111nobodyさん:02/04/30 17:52 ID:???
強制IDにならないかな。
112nobodyさん:02/04/30 19:15 ID:vVTDvLw/
perlを勉強しはじめて2日目のタコですが、
よろしくお願いします。

REMOTE_HOSTと、HTTP_USER_AGENTと、HTTP_REFERERを
取得して、それを同じディレクトリのdata_log.txt に
書き込んでいく、というCGIを作りたいのですが、
いろんなサンプルを見ながらツギハギで書いてみたのですが、
どうしてもここから先がわかりません。
CGIで外部ファイルに書き込みを行うにはどのような処理を
行えばいいのでしょうか?
ご教授いただければ幸いです。
113112:02/04/30 19:16 ID:vVTDvLw/
ソースです。

#!/usr/local/bin/perl

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

#情報取得部

$host = $ENV{'REMOTE_HOST'};#クライアントのIPを取得
$user_agent = $ENV{'HTTP_USER_AGENT'};#クライアントのブラウザ
$referer = $ENV{'HTTP_REFERER'};#飛んできたサイト

#情報表示部

print "<b>REMOTE_HOST</b>: $host";
print "<BR>";
print "<b>HTTP_USER_AGENT</b>: $user_agent";
print "<BR>";
print "<b>HTTP_REFERER</b>: $referer";
print "<BR>";
print "<BR>";
print "<a href=\"http://localhost/~aya/cgi/data_log.txt\" target=\"_blank\">ログを表\示</a>";

#情報記録部(? data_log.txt)
sub write {
open(LOG,"+<$data_log.txt");
@logs=<LOG>;
unshift(@logs,"$host,$user_agent,$referer\n");
seek(LOG,0,0);
truncate(LOG,0);
print LOG @logs;
close(LOG);
}
114nobodyさん:02/04/30 19:22 ID:???
>113
>open(LOG,"+<$data_log.txt");
この$が邪魔なんじゃない?
115112:02/04/30 19:23 ID:vVTDvLw/
>>114
うっス!取ってみますッス!
116112:02/04/30 19:25 ID:vVTDvLw/
うっス!

open(LOG,"+<$data_log.txt");
$取って見ました!

ログを表示してみたところ、
何も書き込まれていませでした!(T-T)
117nobodyさん:02/04/30 19:29 ID:???
&wirte;呼んでないじゃないか。
118nobodyさん:02/04/30 19:29 ID:???
>117
タイプミス。
&write;
119nobodyさん:02/04/30 19:33 ID:???
>>116
当たり前だろ.どこかでwrite()すれ.
120112:02/04/30 19:33 ID:vVTDvLw/
>>117
なるほど!subっていうのをどこかで呼ばないとダメなんですね!

…どうやって呼ぶのでしょうかm(_ _; m?
121nobodyさん:02/04/30 19:34 ID:???
カブターヽ( ´ー`)ノ
122pear ◆FRUIT8pk :02/04/30 19:38 ID:???
>>120
&write;
と、書くだけですね
それにしても2日でこれだけのソースを書くなんてすごいですね
123112:02/04/30 19:39 ID:vVTDvLw/
こうしてみました!
失敗しました!(T-T

print "<BR>";
print "<BR>";
print "<a href=\"http://localhost/~aya/cgi/data_log.txt\" target=\"_blank\">ログを表\示</a>";
write();

#情報記録部(? data_log.txt)
sub write {
open(LOG,"+<data_log.txt");
124112:02/04/30 19:40 ID:vVTDvLw/
わあああああああああああ!!!!!
できました!!!!!!
みなさん、ありがとうございます!!
125112:02/04/30 19:41 ID:vVTDvLw/
解決したソースです。

#!/usr/local/bin/perl

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

#情報取得部

$host = $ENV{'REMOTE_HOST'};#クライアントのIPを取得
$user_agent = $ENV{'HTTP_USER_AGENT'};#クライアントのブラウザ
$referer = $ENV{'HTTP_REFERER'};#飛んできたサイト

#情報表示部

print "<b>REMOTE_HOST</b>: $host";
print "<BR>";
print "<b>HTTP_USER_AGENT</b>: $user_agent";
print "<BR>";
print "<b>HTTP_REFERER</b>: $referer";
print "<BR>";
print "<BR>";
print "<a href=\"http://localhost/~aya/cgi/data_log.txt\" target=\"_blank\">ログを表\示</a>";
&write;

#情報記録部(? data_log.txt)
sub write {
open(LOG,"+<data_log.txt");
@logs=<LOG>;
unshift(@logs,"$host,$user_agent,$referer\n");
seek(LOG,0,0);
truncate(LOG,0);
print LOG @logs;
close(LOG);
}
126112:02/04/30 19:45 ID:vVTDvLw/
みなさん、わかりやすいアドバイスを有難うございます。
ここから、いろいろ応用できそうで、わくわくしてます♪

>>122
いえ、自力ではないです(^-^;
いろんなCGI配布サイトさまの、サンプルをかき集めて、
切り貼りしましたです。
アドバイス…というか、ズバリ回答を、ありがとうございました。

127pear ◆FRUIT8pk :02/04/30 19:47 ID:???
>>126
それでも自分でやった実力はつくと思いますよ
俺もまだ初心者ですがお互い頑張りましょう。
128112:02/04/30 19:49 ID:vVTDvLw/
>>127
ありがとうございます。
私も早く回答者さんに回れるように、がんばります。
129nobodyさん:02/04/30 19:53 ID:???
>>123
あ,write()だと組み込み関数のwriteになっちゃうのか.
&表記をしないのであれば ::write() だったね.スマンカッタ.
130112:02/04/30 20:01 ID:vVTDvLw/
>>129
いえ、とんでもないです。
そういう場合もあるんですね。
勉強になりました♪
131nobodyさん:02/04/30 20:20 ID:???
(´-`).。oO(>>125 <HTML><HEAD> ぐらいは書こうよ…)
132nobodyさん:02/04/30 20:42 ID:???
ショッピングカートの作り方教えろ
133nobodyさん:02/04/30 20:43 ID:???
(´-`).。oO(>>131それを言うなら<title>でしょ…<html>も<head>も省略可能だよ…)
134nobodyさん:02/04/30 20:48 ID:???
>>133
ダウト
135nobodyさん:02/04/30 21:25 ID:???
>>134
(´-`).。oO(XHTMLじゃダメだけどね… http://www.w3.org/TR/html401/index/elements.html 板違いスマソ…)
136nobodyさん:02/04/30 21:52 ID:???
>>135ハァ?
137nobodyさん:02/04/30 23:02 ID:gJDRgS/S
JavaScriptをStringfromCharCodeに変換するツールって あるんですか?
138nobodyさん:02/04/30 23:08 ID:???
>>137
どゆこと?
139137:02/04/30 23:11 ID:gJDRgS/S
>>138
JavaScriptの内容を 数字化して素人さんに解読されないよーにしたいんですけど
140nobodyさん:02/04/30 23:12 ID:64l1RWQD
携帯からの訪問かどうかを調べるには、どのようにすればいいんでしょうか?
141nobodyさん:02/04/30 23:30 ID:???
>>139
お馬鹿さん?
142nobodyさん:02/04/30 23:34 ID:???
>>139
素人さんは解読しないから大丈夫だよ。
つーか、StringfromCharCodeって、JavaScriptの文自体を生成できるんかいな?
143112:02/04/30 23:42 ID:vVTDvLw/
>>140
携帯からのアクセスだと、i-modeなら必ずdocomoのサーバーを
介してくる要求が来る筈ですし、c-htmlなんかを要求された
場合などが、見分けるヒントになりませんでしょうか?
素人見解ですいません。
144137:02/04/30 23:59 ID:gJDRgS/S
>>141
そーかも…
>>142
出来ますよ 実際ソース見ると
eval(String.fromCharCode(数字))
て、具合でしたから
145142:02/05/01 00:02 ID:???
>>144
おー、なるへっそ。それは面白いねぇ。
そのソースがあるサイトのURLキボン。
146nobody:02/05/01 00:14 ID:???
>>145
ソース隠しとか
http://hp.vector.co.jp/authors/VA013453/temp/junk_index.htm
↑のver2.11ってところ
147nobodyさん:02/05/01 00:19 ID:???
>>137
スマートな隠蔽はスマートに解読されがち。
document.write("(゚Д゚)ゴルァ world!!"); するのに400行くらいのダミー行を用意すればいい。
詰まるところ木を隠すなら森。更に言うならば板違い。
148137:02/05/01 00:29 ID:JaMCiNKs
>>147
すいません板違いで
ありがとうございました
149145:02/05/01 00:42 ID:???
>>148
ありゃ、行っちゃったかな。まぁいいや。

#!/usr/bin/perl

undef $/;
$_ = <>;
s/^(.*?)=//o;
s/\+/ /og;
s/%([a-fA-F0-9][a-fA-F0-9])/pack("c",hex($1))/oge;
$mes = $_ ? $_ : "ここに入れる";
$_ = join(", ",unpack("C*",$_));

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

<form action="stringToCharCode.cgi" method="POST">
<textarea name="in" cols="80" rows="30">$mes</textarea>
<input type="submit">
<input type="reset">
</form>
eval(String.fromCharCode($_));
EOF
150nobodyさん:02/05/01 01:16 ID:???
(´-`).。oO(>>149価値のないソースを見せてもらってワラタ)
151nobodyさん:02/05/01 02:05 ID:Q/hHiA0V
>>149
文字化けします
perlじゃ無理なんですね
152nobodyさん:02/05/01 02:27 ID:???
>151
とりあえず、JavaScriptで書いてみた。JavaScriptは初めてなので適当ですが、
IE5で動作しました。得られたコードは、Netscape4では動かない可能性が高いです。
特に、日本語が含まれるとき。

<html>
<head>
<SCRIPT>
function toCharCode (str) {
   var i = 0;
   var ret = "eval(\n\tString.fromCharCode(\n\t\t";
   var tmp = "";
   
   if (str != "") {
      
      while (i < (str.length - 1)) {
         ret += str.charCodeAt(i) + ", ";
         ++i;
         if (i % 16 == 0) {
            ret += "\n\t\t";
         }
      }
      ret += str.charCodeAt(i);
   }
   
   ret += "\n\t)\n);";
   document.ret.text.value = ret;
}
</SCRIPT>
</head>
<body>
<form name="form" method="POST" action="">
<textarea rows="15" name="text" cols="82"></textarea><br>
<input type="button" value="変換" name="btn_tr" onClick="javascript:toCharCode(document.form.text.value)">
</form>
<form name="ret" method="POST" action="">
<textarea rows="15" name="text" cols="82"></textarea><br>
</form>
</body>
</html>
153152:02/05/01 02:38 ID:???
あれれ、
<SCRIPT> → <SCRIPT LANGUAGE="JavaScript">
var tmp = ""; ←ゴミ
154nobodyさん:02/05/01 03:33 ID:???
厨房質問ですいません。
use strict;って何の為にするんですか?
やると処理が早くなるとか、サーバー負荷が減るとかそういう効果が
あるんですかね?
155nobodyさん:02/05/01 03:35 ID:IJ/Gv/S8

www.eseven.jp

ウェッブに関するご相談はこちらまで
ホームページ作成からCGI構築まで
国内有数のデザイン・センスとトップクラスのコンピューター・スキルを
あわせもったスタッフが対応します

156pear ◆FRUIT8pk :02/05/01 07:24 ID:???
>>140
どこからか落としたものデス

$agent = $ENV{'HTTP_USER_AGENT'};

if($agent =~ /^DoCoMo\/\d+\.\d+\/([^\/]*)/i){$name = "i-mode";}
elsif($agent =~ /^J-PHONE\//){$name = "J-Skyweb";}
elsif($agent =~ /^UP\.Browser[^-]*-(\w*) /i){$name = "EZweb";}
else{$name = "PCその他";}
157nobodyさん:02/05/01 07:59 ID:???
>>154
グローバル変数の使用に警告を出したり間違いの可能性を指摘してくれたりします。
貴方の言う効果はありません。
でも出来るだけ書くことをお勧めします。
貴方以外の人がそのスクリプトを読むときに色々と助かります。
158nobodyさん:02/05/01 08:23 ID:???
>>157
なんでプラグマとモジュールが同列に扱われてるんですか?
すごく違和感があるのですが。
159nobodyさん:02/05/01 09:22 ID:???
>>158
つーより、プラグマモジュールだろ。
perldoc perlmodlib
160nobodyさん:02/05/01 09:53 ID:???
>>158
元来Perlはそういったあらゆる制約を嫌う言語だからです。
自由な記述が出来るよう配慮したのではないでしょうか。
161perl歴3日:02/05/01 11:33 ID:???
文字列から任意の文字列を削除するにはどうしたらいいんでしょうか?
たとえば

あういうえあいうえいあいうえ

から 'いう' だけを削除したいときとか。

~tr/いう//d; ではすべての 「い」 と 「う」が削除されちゃいますよね。
162nobodyさん:02/05/01 11:43 ID:???
>>161

文字列 =~ s/いう//g;
163nobodyさん:02/05/01 11:43 ID:???
>>161
s/いう//g;

そもそもtr/いう//d; って動くの? JPerl?
164nobodyさん:02/05/01 11:44 ID:???
ケコーンするか…
165perl歴3日:02/05/01 11:46 ID:???
>>162
>>163
ありがとうございます。perl歴3日はだてじゃなかったです。

>>163
例えを日本語にて行ってみました。
166nobodyさん:02/05/01 12:22 ID:???
JPerlさいこー
167nobodyさん:02/05/01 12:52 ID:ISNd4ZR0
use strict
を使用していますが、サブルーチン内で突然宣言したグローバル変数にエラーを出してくれません。
仕様なのでしょうか。
168無知者:02/05/01 13:00 ID:RKuTX2W0
 何も知らない無知者です。これから簡単なHPを作ろうと思います。
よくプロバイダのホームページなどに「HP作成」コーナーがありますが
そういうとこ行く場合でも、お店で売ってる「HP作成ソフト」は買って
おかないとお話にならないんでしょうか? 
 パソコンの種類はibookというものです。
 
169nobodyさん:02/05/01 13:12 ID:???
>>168
そんなもん買ったら、目もあてられない。
まずはPerl本を買いなさい。
170nobodyさん:02/05/01 13:21 ID:???
use strictって単純に個人でスクリプト使用する場合意味無くね?
171nobodyさん:02/05/01 13:23 ID:???
>>167
そりゃ宣言したらエラーは出ないだろ
172nobodyさん:02/05/01 14:33 ID:???
>>170
まぁそりゃ一回書いて二度と見ない・手直ししないスクリプトや1行
スクリプトならね・・・

でも基本的には意味ある・意味ないの問題ではなく、その後問題に
ならないように癖としてつけておくべきものだと思ふ。
173nobodyさん:02/05/01 14:34 ID:Y6d+iOU0
>>171
たしかPHPではグローバル変数はサブルーチン内で作成できないと思いましたが、
Perlでは間違って変数をグローバル宣言してしまっていてもわからないのですか。
174nobodyさん:02/05/01 14:35 ID:???
>>167
なんだ、宣言って。local $global;とでもやったのかね。これって
全然グローバルじゃないって事わかってるだろうね?
175あげ太郎:02/05/01 15:28 ID:nNyYCbiy
掲示板を作ってるんですが
同じ内容の投稿を禁止するには
どうすればいいかわかりますか?
176あげ太郎:02/05/01 15:30 ID:nNyYCbiy
追加:”同じ人”の同じ内容
177168の無知:02/05/01 15:32 ID:OCxUwcxh
>169 perl本とは何ですか、参考書みたいなもの?
そもそもperlという言葉の意味を簡単でいいので教えれくださ
178nobodyさん:02/05/01 15:43 ID:???
>175
発言を記録する前に、発言者&内容と、最新の記事の発言者&内容を比較。
具体的なやり方が知りたければ、二重投稿禁止機能のあるBBSを探してそのソースを見るといい。
無料配布のでもたくさんあるだろ。
179nobodyさん:02/05/01 15:45 ID:???
180nobodyさん:02/05/01 15:58 ID:???
>>173
ourはブロックスコープでuse varsはパッケージスコープを持っているので,

use strict;
sub hoge { use vars qw($hage); $hage = 'sage' }
hoge();
print "$hage\n";

は合格で,

use strict;
sub hoge { our $hage = 'sage' }
hoge();
print "$hage\n"; # Error!

は失格.

ちなみにstrict 'vars'が怒るのは
 ・パッケージが指定されていない
 ・パッケージ内でuse varsされていない
 ・ブロック内でmy,ourされていない
という条件を全て満たす変数にアクセスしようとした場合のみです.

間違ってグローバル宣言する事はまず無いと思うけど,宣言しただけではエラーは出ません.
181あげ太郎:02/05/01 16:43 ID:???
>>178
レスどうもありがとう
がんばります
182nobodyさん:02/05/01 16:56 ID:???
何かにつけ、小一時間問い詰めたいと言うバカの何チャラがいる板は
この辺ですか?
183nobodyさん:02/05/01 18:52 ID:1jtifKOi
サブルーチンの中の変数をmy宣言すると、
参照渡しできなくなるのですか?
184nobodyさん:02/05/01 18:56 ID:???
出来るよ。聞く前に試した方が早いと思うが・・・
185nobodyさん:02/05/01 18:58 ID:???
>>183
自分で確かめてみよう。
186nobodyさん:02/05/01 20:37 ID:Kie4dwlr
URLを貼ってもオートリンクが効かない掲示板のcgiスクリプトを使っているんですが、
自動的にリンクされるように設定したいんですが、
簡単に書きかえれるものなんでしょうか?
それともおれみたいな初心者は無理でしょうか?
187nobodyさん:02/05/01 20:41 ID:???
188nobodyさん:02/05/01 21:51 ID:c2Kry9FX
>>180
親切に教えて頂きありがとうございます。
わたしのグローバル宣言とは、タイポで未宣言の変数名に
$abc="abc";
のように、存在しているかのように値を入れたことです。
エラーがでなかったので特定に困りました。
パッケージはプログラムの最初に宣言していました。
189nobodyさん:02/05/01 22:56 ID:???
>>188
あれ? それは use strict; していればきちんと怒られると思うのですが…….

パッケージ云々について少し伝わらなかったような気がするので補足します.
これはプログラムの最初でパッケージ宣言をしているかどうかは関係ありません.
>>180でエラーになっていたところ
 print "$hage\n"; # Error!
がありましたが,この場合でも
 print "$package_name::hage\n"; # OK
のように変数にパッケージ名を指定すれば怒られずに済むという事です.
この際そのパッケージが実際に存在しているかどうかは問いません.

ぱっと見で参照先が特定できない変数を見つけたらエラーを出す,
というのが use strict 'vars'; です.

あと,Typoを防ぐのであれば /perl -w するのがよろしいかと.
190nobodyさん:02/05/01 23:12 ID:???
このスレこの板で一番まともで優良な気がするのは漏れだけ?
191nobodyさん:02/05/01 23:20 ID:???
前の方の荒らしレスを見ても?
192nobodyさん:02/05/02 00:45 ID:???
その荒らしが少ない。
教える方がコーマンチキじゃない(これが素晴らしい)
初心者は結構すぐに礼をしてる。

って辺りを言っているんだが、こういうこと書くと意図的に荒らす奴とかでそうだな。
193_gnuzip:02/05/02 01:05 ID:???
>>192
教えるほうについては、たまたまそういう解答者がいただけだね。
荒らしについては、いつもの彼が連休でどっか逝ってるんでしょう。
194nobodyさん:02/05/02 01:10 ID:???
>>192
初心者スレッドは初代からそんな感じですね。
役立つので過去ログ捨てられない。
195183:02/05/02 01:14 ID:+oT0W11F
>>184-185
下のスクリプトなのですが、local宣言をmy宣言にすると
   Can't declare ref-to-glob cast in my at foo.cgi line 10, near ")="
   foo.cgi had compilation errors.
となってしまいます。どこを直せばよいのでしょうか?

#!/usr/local/bin/perl

$str='ギコギコニャーニャー。トカトントン';
print "$str\n";
&str_omit(*str,16,'…');
print "$str\n";

sub str_omit
{
   local(*str,$size,$omit)=@_;
   local($buf)=substr($str,0,$size);
   
   if($buf!~/^([\x00-\x7f]|[\x81-\x9f\xe0-\xfc][\x40-\x7e\x80-\xfc])*$/){
       $buf=substr($str,0,$size-1);
   }
   if(length($buf)<length($str)){ $buf.=$omit; }
   $str=$buf;
   return "$str";
}

__END__
196nobodyさん:02/05/02 01:16 ID:???
>>188
サブルーチンを別ファイルに追い出して 呼出し側で use strict しているとか。
197nobodyさん:02/05/02 01:31 ID:???
>>195
型グロブをやめれ。その必要も無いし。
198nobodyさん:02/05/02 01:49 ID:???
>>195
敢えて型グロブを使うなら

×
my(*str,$size,$omit)=@_;


local *str = shift;
my($size,$omit)=@_;
199あぼーん:あぼーん
あぼーん
200nobodyさん:02/05/02 04:20 ID:Opu6NMoF
二度と出てくるな!!!!!!!!
201nobodyさん:02/05/02 05:10 ID:???
>>199-200
おまえはカルシウム不足だから、煮干しでも喰っておけ(w
202nobodyさん:02/05/02 08:05 ID:???
>>200
お前がな。
203193:02/05/02 10:34 ID:???
>>192
な。ちゃんといるだろ?
204nobodyさん:02/05/02 16:25 ID:Opu6NMoF
>>203

お前を見てるとむかつくんだよ。死ね!!!!!!
死ね!

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■


(省略されました・・全てを読むにはここを押してください)


205nobodyさん:02/05/02 16:26 ID:???
掲示板とかのログファイルをダウンロード(閲覧)できないようにするにはどうしたら?
206nobodyさん:02/05/02 16:30 ID:???
>205
・.htaccessで制限
・ログの拡張子を.cgiや.plにしてしまう
サーバーによって使えたり使えなかったりするけど。

ちなみにコーディングの話じゃないからスレ違いな。
207nobodyさん:02/05/02 16:37 ID:???
>>205
せっかく書いちゃったので。

ログ入れてるディレクトリの .htaccess で
<Files "*.log">
Order allow,deny
Deny from all
</Files>
208nobodyさん:02/05/02 16:46 ID:???
>>207
それをしてもCGIから読み込みできますか。?
209nobodyさん:02/05/02 16:52 ID:???
>208
出来ない方法を教えられてると思ったか?
出来るよ。
210nobodyさん:02/05/02 16:52 ID:???
>>188 >>189
調べたところrequireしたplファイル内のサブルーチンで
宣言するとエラーにならず、メインのルーチン内で宣言するとエラーになるようです。
211183:02/05/02 16:56 ID:lVIeVo5W
>>197-198
すいません。型グロブというのはよくわかりません。
Cのようなポインタ渡しをPerlで行う方法はありませんか?
212207:02/05/02 17:00 ID:???
>>208
試せば分かることじゃん。まず自分で試そうよ。
もちろん、悪意のあるアドバイスかもしれんので、apacheの<Files>
の意味を調べてからね。
http://japache.infoscience.co.jp/japanese_1_3/manual/mod/core.html#files

で、CGI内でのファイルの読み書きは、httpd(webサーバ)とは関係ないので、
いくらでもできるよ。
system("cat /etc/passwd");
とか。

213nobodyさん:02/05/02 17:03 ID:???
       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       | >>209
       | うるせーモカ!うるせーモカ!うるせーモカ!
   ∧ ∧ |/\_________
   (,,゚Д゚)____.
   (つ/~ ※ ※ \
   /※ ※ ※ ※ \
>>205じゃないよ
214nobodyさん:02/05/02 17:07 ID:???
>>211
↓調べてみた。型グロブ。
http://www5a.biglobe.ne.jp/~n_rieko/perl/1.htm

リファレンス渡しについては
perldoc perlref
215nobodyさん:02/05/02 18:39 ID:???
ユーザに設定を任せた配列をコピーする場合、あればそのまま、
無ければデフォルト値をセットしたいのですが、変数で
よく使われるテクニック(?)が使えませんでした。

@week = qw(日 月 火 水 木 金 土);# ユーザ任せ
my @week = @week || qw(Sun Mon Tue Wed Thu Fri Sat);

これでは $week[0] に配列の要素数が入るだけのようでした。
それで考えたのは下記ですが、もっと簡単な方法ありませんか?

my @week = @week ? @week : qw(Sun Mon Tue Wed Thu Fri Sat);
216215:02/05/02 19:01 ID:???
すいません、「簡単」というか「普通はこうするよ」ってな
セオリー通りのやり方が知りたいのでした。宜しくお願いします。
217nobodyさん:02/05/02 19:07 ID:???
>>215
@week or @week = qw(Sun Mon Tue Wed Thu Fri Sat);

変数だったら $var ||= $default; が普通かなー。
218215:02/05/02 19:27 ID:???
>>217 それ簡潔でいいですね、有難う御座いました。変数の方もスッキリしてます。
219nobodyさん:02/05/02 21:28 ID:???
if ($in{'name'} =~ /★/) { $in{'name'}=~ s/★/☆/g; }
if ($in{'name'} eq "#pass") { $in{'name'} = "管理人 ★"; }

これでキャップと似たようなものになるはずなんですが、
パスを打って書き込むと「管理人 ★」になるはずですが
「管理人 ☆」になってしまいます。

どうすればいいのでしょうか?
220197:02/05/02 21:35 ID:???
>>211
型グロブがよくわらんって、あなた自分で使っているやつだよ。
local(*str,$size,$omit)=@_; って書いてる、*strの部分。
型グロブには my は使えんから、>>195のエラーが出るって
とこまで書かないとダメかいね。
しかし、なんでスカラ値渡すのに、リファレンスや、型グロブが
必要なのか謎。
221nobodyさん:02/05/02 21:39 ID:???
>>219
パス付きでも何でもいいけど、
書き込んだ時にどういう順番で処理されるかをもう一度考えてみれ。

あと、if ($in{'name'} =~ /★/) { $in{'name'}=~ s/★/☆/g; }は
$in{'name'} =~ s/★/☆/g; で十分。
222nobodyさん:02/05/02 21:44 ID:???
>>219
#passに★が含まれてるんじゃねーの?
223nobodyさん:02/05/02 21:47 ID:???
>219
if ($in{'name'} eq "#pass") { $in{'name'} = "管理人 ★"; }
else{$in{'name'} =~ s/★/☆/g;}
としておけば問題は起こらないと思われ。
これでもまだ「管理人 ☆」になるなら、
1:プレビュー画面を挟んでいないか
2:この処理が2回以上行なわれるようになっていないか
を確認するべき。
224219:02/05/02 22:25 ID:???
219です。
再確認してみたら

if ($in{'name'} eq "#pass") { $in{'name'} = "管理人 ★"; }
if ($in{'name'} =~ /★/) { $in{'name'}=~ s/★/☆/g; }

と書かれており、上下を入れ替えて試してみたら正常に動作しました。
つまり、ただ自分がミスしてただけでした(w

>>221-223
質問に答えてくれてどうもありがとうございました。
225nobodyさん:02/05/03 01:45 ID:???
初心者なんですが、これでまちがいないでしょうか?

if ($in{'name'}=~ /アホ/) { $in{'name'}= 'Dream ★'; }
elsif ($in{'name'}=~ /無能/) { $in{'name'}= '_gunzip'; }
elsif ($in{'name'}=~ /厨/) { $in{'name'}= '弐編'; }
226pear ◆FRUIT8pk :02/05/03 02:45 ID:???
>>225
あ、そのコードを使うなら、下に2行足さないとダメですね

elsif ($in{'name'}=~ /用(無|な)し/) { $in{'name'}= 'pear'; }
else{ $in{'name'}='その他名無し'; }
227nobodyさん:02/05/03 03:03 ID:???
500KBほどのファイル300個に対して、ファイル検索をしたいのですが、
効率の良い方法はありませんか?
ファイルの一覧は、@filesに格納してあります。
入力された、$in{'word'}が含まれるファイルをリストアップしたいのです。
よろしくおながいします。
228nobodyさん:02/05/03 03:57 ID:???
>227
楽勝だな!
229nobodyさん:02/05/03 07:36 ID:???
>>227
{
    my $tmp;
    @files = grep {
        open  FILE, $_ or die;
        read  FILE, $tmp, -s FILE;
        close FILE;
        $tmp =~ /\Q$in{'word'}\E/;
    } @files;
}
230nobodyさん:02/05/03 07:38 ID:???
{
    my $tmp;
    @files = grep {
        open  FILE, $_ or die;
        read  FILE, $tmp, -s FILE;
        close FILE;
        $tmp =~ /\Q$in{'word'}\E/o;
    } @files;
}

すまん、/oつけ忘れた。
231nobodyさん:02/05/03 07:57 ID:???
全くの初心者です(このスレできくべきなのかもわからない)
でも作りたいものはあります。

まず、お手数かけて恐縮ですがこのサイトを見てみてください。
http://kooks-highhat.com/jpn_index.html
ここの「カラーピックアップシステム」では、何種類もの色と柄を
自由に組み合わせてオリジナルTシャツ作りのシュミレーションができる
ようになっています。
私は、こういったことをTシャツの色と柄ではなく、
「複数種のワイシャツ(写真画像)」と「複数種のネクタイ(写真画像)」を自由に組み合わせて
シュミレートできるようなシステムを作りたいと思っています。

しかしながら全くの初心者のため、どんな言語をどんなふうに使えばできるのか
さっぱりわかりません。
どなたか教えて下さいませんか?
とりあえず「すぐわかるPerl」とかで学べばよろしいのでしょうか?
232nobodyさん:02/05/03 08:37 ID:???
>>231
PerlとGDで出来そうだけどね。
Javaとか使った方がパフォーマンスは良いかと。
233nobodyさん:02/05/03 08:39 ID:???
>>231
それなら、CGIじゃなくてJavaScriptがイイと思う。
もしくは、Flash
234nobodyさん:02/05/03 08:55 ID:6+RS1vf9
>>226
コテハンは死ね!
235nobodyさん:02/05/03 08:56 ID:6+RS1vf9
( ´,_ゝ`) プ プ プ プ プ プ プ プ プ プ プ プ
236nobodyさん:02/05/03 09:04 ID:6+RS1vf9
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
gdsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgs
xs5r6rs56rs56rs56rs56rs56rs56rs56jtx,7wz434w34w34w34w34w34w34w34w34w34w34,........
237nobodyさん:02/05/03 10:54 ID:6+RS1vf9
程度ひくぅ(p
238nobodyさん:02/05/03 10:54 ID:6+RS1vf9
このスレの1だが、あまりに程度が低いので終了とします。
239pear@空気固定 ◆FRUIT8pk :02/05/03 10:55 ID:???
>>234
うんうん
240nobodyさん:02/05/03 11:05 ID:6+RS1vf9
とんでけ
241nobodyさん:02/05/03 11:09 ID:6+RS1vf9
コテハンはみんな無能。
スキルの低い奴ばっかり
242こてはん ◆W181N/6Q :02/05/03 11:22 ID:???
呼んだ?
243nobodyさん:02/05/03 11:23 ID:???
>>241
ばかばっkあ(藁
244nobodyさん:02/05/03 11:26 ID:6+RS1vf9
コテハンはみんな無能。
スキルの低い奴ばっかり


245nobodyさん:02/05/03 11:48 ID:KcX/dW60
サブルーチンの引数でハッシュの参照渡しってどのようにするのですか?
246nobodyさん:02/05/03 12:01 ID:6+RS1vf9
コテハンなんてなぁ、所詮はしろーとなんだよ(ワラ
要するに初心者以下のレベルってことよ(ゲラ
おめーら小学校からやりなおせよ(ハゲワラ
247nobodyさん:02/05/03 12:08 ID:???
>>245
foo(\%bar);
248nobodyさん:02/05/03 12:10 ID:???
229=230=Mr.ohzaki?
249nobodyさん:02/05/03 12:11 ID:6+RS1vf9
p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;
250_gunzip:02/05/03 12:21 ID:???
>>246
しろーと か否かはレベルではなく、収入を得ているかどうかです。あしからず。
251245:02/05/03 12:21 ID:KcX/dW60
sub hashtest(\%){
my (%s) = @_;
my %test;

%h_test = ("1", "h1",
"2", "h2");

%$s = %h_test;
}

これでは駄目でしょうか?
252245:02/05/03 12:24 ID:KcX/dW60
訂正:
my %test; -> my %h_test
253nobodyさん:02/05/03 12:27 ID:???
>>251
my ($s) = @_;

リファレンスは常にスカラー値。
254_gnuzip:02/05/03 12:33 ID:???
>>250
出てくるな。ヴォケ
255nobodyさん:02/05/03 12:36 ID:6+RS1vf9
>>254
はげ指導医
256nobodyさん:02/05/03 12:37 ID:6+RS1vf9
>>254        
激しく同意
257nobodyさん:02/05/03 12:59 ID:6+RS1vf9
次は>>226がターゲットです。
258_nobodyさん:02/05/03 13:17 ID:???
>>254
それ、オレのコテハンだったのに・・・
もういいもん。
259_gnuzip:02/05/03 13:18 ID:???
煽り専用の共用コテハンかと思うて使っただけなのだ。
すまど
260_nobodyさん:02/05/03 13:22 ID:???
>>259
じゃ共用でOKです。
261nobodyさん:02/05/03 13:43 ID:6+RS1vf9
┌──────────────────────―─―┐
│□ ■2ch BBS . − Microsoft Internet Explorer     囗曰区| |
├───────────────────────┬─┤
│ファイル(F) 編集(E) 表示(V) お気に入り(A) モナー(∀)   |::田|
├────────────────┬──────┴─┤
| ←     →     ×     圍    合  |   Q          》|
| 戻る   進む   中止  更新  ホーム |  検索          |
├────┬───────────┴──┬─┬───┤
│アド レス(D) | □http://www.2ch.net/2ch.html. . |▼|⇒移動|
├────┴───┬┬─────────┴─┴──┬┤
│                ├┤                      ├┤
|2ちゃんねる..    ||                      ||
│2chの入り口..    ||                      ||
│2ch総合案内┌───────────────────────┐
│.           | 2ch.                                    |
│        ├───────────────────────┤
│おすすめ   | 1は不正な処理を行いました 。         ┌───┐  |
│モナー    | 残念ですが1の人生を               | 終了.... |  |
│        | 終了させてあげて下さい。(推奨).     └───┘  |
│        |                                  |
│        └───────────────────────┘
│特別企画        ├┤                      ├┤
├┬──────┬┼┼┬────────────┬┼┤
├┴──────┴┴┴┴──┬─┬─┬─────┴┴┤
│□ エラーが発生しました    |  |  |●インターネット |
└─────────────┴─┴─┴───────┘
262nobodyさん:02/05/03 15:29 ID:???
263nobodyさん:02/05/03 15:50 ID:7hc2ohlW
タグの中を英字を大文字→小文字にするにはどうすればいいんでしょうか?
ただ、<img src="image.png">などの場合の""の中は変換したくないのですが。
264nobodyさん:02/05/03 15:57 ID:???
>263
すっごいめんどうくさい正規表現を組む。
265nobodyさん:02/05/03 16:19 ID:???
>>263
$str = join '', map {
    /^</ and $_ = join '', map { /^"/ or $_ = lc; $_ } split /("[^"]*")/; $_
} split /(<[^>]*>)/, $str;

$strにHTML文書を入れれ。
266nobodyさん:02/05/03 16:21 ID:???
>265
alt='この中では"が使えます'
が入ってた場合は?
267nobodyさん:02/05/03 16:43 ID:???
>>266
$str = join '', map {
    /^</ and $_ = join '',
        map { /["']$/ or $_ = lc; $_ } split /(["'])([^\1]*\1)/; $_
} split /(<[^>]*>)/, $str;

こんな感じかな? 適当スマソ。
268nobodyさん:02/05/03 18:01 ID:7wVKBbUQ
#! c:/perl/bin/perl

print "Content-type: text/plain\n\n";
print "Hello Perl !";

これをローカルで試そうとして、http://127.0.0.1/chapter1/1.cgi
と入力しました。が、なぜかダウンロードしてしまいます。(保存するか聞いてくる)
text/htmlにするとちゃんとブラウザに表示されます。
解決策教えてください。
269nobodyさん:02/05/03 18:06 ID:???
どういう風に解決したいのかがわからん・・・・
270nobodyさん:02/05/03 18:06 ID:???
>>268
いろんなブラウザで試してみた? IEだとたまにそうなる。
271nobodyさん:02/05/03 18:13 ID:7wVKBbUQ
>>269
ダウンロードせずに、結果をブラウザで表示させたいんです。

>>270
Netscape6で確かめたらちゃんとできました。Opera6.01だとだめでしたが。
どうもありがとうございました。
272nobodyさん:02/05/03 19:17 ID:???
ファイル情報を取得するにはどうすれば良いですか?
273nobodyさん:02/05/03 19:24 ID:???
>>272
ファイル情報って例えばドンナンデスカ
274cova:02/05/03 19:26 ID:???

スカラ変数 = (stat(ファイルハンドル または ファイル名))[インデックス番号];

---------------------------------------------------------------------

インデックス番号

0 → ファイルシステムのデバイス番号
1 → iノード番号
2 → ファイルのモード
3 → ハードリンクの数
4 → ファイル所有者のユーザID
5 → ファイル所有者のグループID
6 → デバイスID
7 → ファイルサイズ(バイト単位)
8 → 最終アクセス時間
9 → 最終変更時間
10→ iノード変更時間
11→ ファイルシステムI/Oの最適ブロックサイズ
12→  割り当て済みのブロックサイズ
275cova:02/05/03 19:27 ID:???

data.datというファイルの最終アクセス時間を取得する場合は

$accesstime = (stat(data.dat))[8];

という感じ
276nobodyさん:02/05/03 19:29 ID:7hc2ohlW
>267
それだと Foo="Bar" の組み合わせが複数あると最初の一つしかできませんでした。
というか自分がその事書いてなかった。。逝ってきます。
277nobodyさん:02/05/03 19:32 ID:???
>>275
Web上のファイル情報は取得できないのでしょうか?
278nobodyさん:02/05/03 20:01 ID:???
>>276
ごめんなさい……。
直すついでにPerlメモの『HTMLタグの正規表現』(のコメント抜き)を取り入れてみました。
ttp://www.din.or.jp/~ohzaki/perl.htm#HTML_Tag

my $tag_regex_ = q{[^"'<>]*(?:"[^"]*"[^"'<>]*|'[^']*'[^"'<>]*)*(?:>|(?=<)|$(?!\n))};

$str = join '', map {
    /^</ and $_ = join '',
        map { /["']$/ or $_ = lc; $_ } split /(["'])(.*?\1)/s; $_
} split /(<$tag_regex_)/o, $str;

で、試してみたら <!DOCTYPE まで小文字になって鬱。
279nobodyさん:02/05/03 20:07 ID:???
>>278
<!DOCTYPE

って、必ず1行目だっけ?だったら、最初の1行目だけスキップすれば?
280nobodyさん:02/05/03 20:20 ID:???
>>279
xml宣言もあるのでそうとも限らない.
まあ指摘の通り>>278に特殊な場合の処理を足していけばいいだけだね.
281nobodyさん:02/05/03 20:22 ID:???
>>280
カキコしたあとで気づいた…
1行目に記述されてても、複数行に渡って書いているのもあるな…
282nobodyさん:02/05/03 20:40 ID:???
>278-281
うまく動きました。ありがとうございました。
あと、<!DOCTYPEは削除してしまうので特に問題ないです。
283nobodyさん:02/05/03 21:05 ID:vg/qOBA6
初めまして。
さっそくですが、質問です。
これはどういういみですか?第2引数がわかりません。
push(@sqcookie, "${name}_${value}");
284nobodyさん:02/05/03 21:05 ID:???
http://と打つと自動的にリンクされるようにしたいのですが(本文の変数は$FORM{'comment'} )

$url = '([^=^\"]|^)(http\:[\w\.\~\-\/\?\&\=\@\;\#\:\%]+)';
$FORM{'comment'} =~ s/$url/<a href=\"$url\" target=\"_top\">$url<\/a>/g;

こうしても上手くリンクされますか?
285284:02/05/03 21:06 ID:???
誤字

こうしても上手くリンクされますか?

こうすると上手くリンクされますか?
286nobodyさん:02/05/03 21:09 ID:???
>>284

そのコードで動かしてみればいいじゃん
287nobodyさん:02/05/03 21:11 ID:???
>>277

ファイル情報って具体的にどういう情報を知りたいんだYO
288nobodyさん:02/05/03 21:11 ID:???
>>286
おれもそうおもったw
289nobodyさん:02/05/03 21:13 ID:???

$scalar = "10";

$scalar += 10;

とやらないで,いきなり

$scalar += 10;

とやるとスカラ変数'$scalar'にはundef値である0が代入されていますが

このundef値って何て読むんですか?アンダフ値でいいの?
290284:02/05/03 21:21 ID:???
284です。
実際に試してみましたが、無理でした・・・。

どうすればURLが自動リンクされるのでしょうか?
291nobodyさん:02/05/03 21:22 ID:???
>>289
あんでふじゃない?
定義されていないって意味
292nobodyさん:02/05/03 21:29 ID:???

なるほど アンデファイン undefine の略か

じゃあ人前で使うときはアンデファインでいいや
293nobodyさん:02/05/03 21:29 ID:???
>284
後方参照($1とか$2とか)は知ってる?
294284:02/05/03 21:33 ID:???
>>293
すみません。
全然知りません。
KENT WEBのCGIにはあったけど・・・
295nobodyさん:02/05/03 21:34 ID:???
undefinedだろ ボソ
296_gnuzip:02/05/03 21:34 ID:???
     _,∩_         _,∩_           _,∩_
    (_____)ゝ、     (_____)    y     (_____)
    / :: :: :: ヽ 〉     /-‐:: ::‐-ヽ /       / :: :: :: ヽ
   _./ (・ )ll(・ ) ∨     _/  0) i! 0) ∨      _/ ( ・)i!(・ ) ゙、_
 // :: :: ∈ゝ :: ::ヽ   // ::  ‐-‐ :: ヽ    //  :: ー一 :: ヽ\
. ゝ/:: :: ::  :: :: ::ヽ  ゝ/ :: ::  ::  :: :: ヽ   ゝ/ :: ::  ::  :: :: ヽく
   ̄ ̄ | ̄ ̄ | ̄ ̄     ̄ ̄ | ̄ ̄ | ̄ ̄     ̄ ̄ | ̄ ̄ | ̄ ̄
       |     |             |     |             |     |
    ⊂!     !つ        ⊂!     !つ        ⊂!     !つ      
教えてあげないよ!ジャン!
297nobodyさん:02/05/03 21:40 ID:???
>>295

そうなの?
298さゆ ◆ugYa5.J6 :02/05/03 21:51 ID:???
>>284
()でくくった部分にマッチした文字列は$1とか$2で参照できる。

$FORM{'comment'} =~ s/$url/<a href="$2" target="_top">$2<\/a>/og;
299nobodyさん:02/05/03 21:52 ID:???
>>277
HEADでヘッダだけ持ってくれば、
ある程度わかるよん。
300nobodyさん:02/05/03 22:08 ID:CL/oAkFo
imode用の「accesskey=」をcgiにリンクさせたいんですが、どうすればいいでしょうか?
301nobodyさん:02/05/03 22:10 ID:???
>>284
役に立たない細かい事を色々と。$urlの中の([^=^\"]|^)は余分。

あと、文字クラス[〜]の中ではほとんどの文字はエスケープしなくてもいい。
ただし"-"はマジカルインクリメント(例:[a-z])の効果があるから最初か最後に置く。
[\w\.\~\-\/\?\&\=\@\;\#\:\%]+ → [\w.~/?&=@;#:%-]+

つかここで聞くよりPerlメモを・・・・ (ボソ
302pear@空気固定 ◆FRUIT8pk :02/05/03 22:27 ID:???
>>300
意味がわかりません。

<a href="test.cgi" accesskey="1">
ということかな?
303nobodyさん:02/05/03 22:47 ID:???
>>301
マジカルインクリメントは ++ っしょ。
304nobodyさん:02/05/03 23:02 ID:apBthE5H
別スレでやったらスレ違いっぽかったので こっちで

\n\n〜 と複数続いていたら
\n一つだけに やるのは どうすればよいのでしょうか?

s/[\n]*$/\n/g
でうまくいきませんでした
305nobodyさん:02/05/03 23:14 ID:???
s/\n+/\n/g;
306304:02/05/03 23:16 ID:???
>>305
ありがと
307nobodyさん:02/05/03 23:33 ID:???
>>303
マジカルインクリメントって .. じゃねーの?
308303:02/05/03 23:49 ID:???
>>307
ちがうー。
309nobodyさん:02/05/03 23:55 ID:???
>>308
そなの? perlopのRange Operatorsにそれっぽい事が書いてあったんだけど。
++はどうマジカルなの?
310nobodyさん:02/05/04 00:05 ID:???
パターンマッチングについて質問させてください。
テキストファイル内の文字列をjcode.plにてEUCに変換後、
ひらがだけを抜き出したいのですが、検索対象文字リストを
tr/ぁ-ん//cd にすると結果が文字化けしてしまいます。
この場合、検索対象文字リストはどのように指定したら良いのでしょうか?
311303:02/05/04 00:08 ID:???
>>309
Perlでは、数字じゃないものもインクリメントできるから、マジカル。
perlop の Auto-increment and Auto-decrement のとこに
「オートインクリメントオペレータには、ちょっとしたマジックが
仕込んである」と書いてある。

perlopには
「レンジオペレータは、数字じゃないものが来た時、マジカルインクリメント
 アルゴリズムを使う」
って書いてあるよぅ。
312nobodyさん:02/05/04 00:09 ID:???
>>310
オレは、そういうときは jperl を使います。
313310:02/05/04 00:12 ID:???
>>312 さん
やっぱりjperl使うしかないのですかねぇ・・・。
314nobodyさん:02/05/04 00:16 ID:???
>>310
>>3の[お薦め]に載ってるPerlメモってサイトを参考にしてみては?
315nobodyさん:02/05/04 00:16 ID:???
>>311
んー。諒解しました。本家は ++ なわけね。
316nobodyさん:02/05/04 00:26 ID:GNJILI/X
質問です。
ログファイルの$hoge[3]にそれぞれ数字がありまして
その数の合計を求めるにはどうすれば宜しいのでしょうか?
ログファイルは\tで区切ってあります。
317310:02/05/04 00:26 ID:???
>>314 さん
実はすでにあちらのメモも試したのですが、うまくいかなかったのです。
でも、実際のところはどこがうまくいっていないのか理解できていないので
うまく適用できていなかったのかもしれませんが・・・。
318nobodyさん:02/05/04 00:33 ID:???
>>316
改善されてねーな

112 :nobodyさん :02/05/03 18:40 ID:???
>>110
「ログファイルの$hoge[3]」って何よ。
「ログファイルは\tで区切ってあります」ってのはレコード区切りが\nでデータ区切りが\tって事か?

わかるように書いてくれ。いや、大体わかっているんだけどな。
319nobodyさん:02/05/04 00:35 ID:???
>>316
\tで区切ってるログファイルの4番目のとこに数字があるってこと?

$count=0;
open(FILE,"./$filename");
while(<FILE>){
@hoge=split(/\t/);
$count+=$hoge[3];
}
close(FILE);
print $count;
320nobodyさん:02/05/04 00:46 ID:???
>>318
漏れもワラタ。
321nobodyさん:02/05/04 00:49 ID:???
>>310
$_ = '文字コードがEUCの場合ね';
s/\x82[\x9F-\xF1]//g;
print;

これでひらがなだけ削れる
逆は自分で考えれ
322nobodyさん:02/05/04 00:49 ID:???
>>317
$hoge ="123あいうえ456さしすせ-*/アイウabcdエオ";

$Zhiragana = '(?:\xA4[\xA1-\xF3])';
$hoge =~ s/$Zhiragana//g;

EUCこれでできるよ。
実行したら print $hoge; で表示されるのは
123456-*/愛上尾アウabcdエオ

あなたはどう書いてるの?EUCにコンバートするところとかは?
323nobodyさん:02/05/04 00:53 ID:/IfudcOZ
他のサーバーにある画像ファイルのファイルサイズを取得するにはどうすれば良いでしょうか?
324nobodyさん:02/05/04 00:54 ID:???
上のShift_JISだった
EUCはこうか
s/\xA4[\xA1-\xF3]//g;
325321,324:02/05/04 00:56 ID:???
>>322が書いてるし 逝ってこよ…
326310:02/05/04 00:56 ID:???
>>321 ( >>324 ) さん
ありがとうございます!うまく動きました。
trを使っていたのが間違いだったのでしょうか??
兎にも角にも、ありがとうございました。
327nobodyさん:02/05/04 00:56 ID:???
>323
LWPを使う。
328nobodyさん:02/05/04 00:57 ID:???
(´-`).。oO(今日は妙に活気があるね…)
329nobodyさん:02/05/04 00:58 ID:???
>>322
実行されて表示されるの違った結果かいちゃいました。ごめん
330nobodyさん:02/05/04 00:59 ID:???
>>328
全部自作自演です。
331310:02/05/04 00:59 ID:???
>>322 さん
お答えありがとうございます。そちらも試したのですが
SCALAR(0xc963c4)
のエラーがでてしまいます・・・。なぜでしょう?
332_gunzip:02/05/04 01:00 ID:???
質問するほうも、答えるほうも、はっきり言わせてもらうが
レベルが低いよ。
333310:02/05/04 01:02 ID:???
>>322 さん
とりあえず、入力される文字列は全て
jcode::convert(\$hoge, 'euc');
にてeucにコンバートしております。
で、とりあえずいまはWin2000上のコマンドプロンプトで動かしているので
出力前にsjisにして出力しています。
334nobodyさん:02/05/04 01:04 ID:/IfudcOZ
>>327
LWPですか・・
ちょっと調べてきます・・・
335nobodyさん:02/05/04 01:05 ID:???
>>332
(´-`).。oO(はっきり言わせてもらうがレベル高かったら質問しないよ…)
336310:02/05/04 01:06 ID:???
>>322 さん
何度もレスすみません。動きました。こちらの記述ミスでした。
ただ、「イ」が消えてしまうのはやはりコード上の問題でしょうか?
337nobodyさん:02/05/04 01:07 ID:???
(´-`).。oO(>>332 は放置で…はいはい、次の方〜)
338nobodyさん:02/05/04 01:08 ID:???
★★★ 質問者はコードを晒せ ★★★
339nobodyさん:02/05/04 01:09 ID:???
>>332
騙りウザイ
340nobodyさん:02/05/04 01:10 ID:???
if ( $situmonsha{'sex'} == $female ) {
 print "写真うpしる!話はそれからだ!\n";
}
else {
 print "逝ってヨシ!\n";
}
341nobodyさん:02/05/04 01:11 ID:???
(´-`).。oO(_gunzipは共有コテハンじゃないのにねぇ・・・はい、次の方〜)
342316:02/05/04 01:15 ID:GNJILI/X
>>319
エラーになっちゃいました。
$count+って使えます?
343さゆ ◆ugYa5.J6 :02/05/04 01:20 ID:???
>>342
うちではエラーでないぞ。
コピペミスじゃない?
344nobodyさん:02/05/04 01:35 ID:???
>>342
+ と += の違い分かりますか?
345_gunzip:02/05/04 01:37 ID:???
レベルが低いと言ったのは、1 に書いたことを無視した質問のしかたや
過去レスで何度も答えている内容をいまだに質問してくるということで、
そのために答えるほうもまとを得ない答えになってしまっているということ。
346342:02/05/04 01:38 ID:???
>>344
わかりませんです。
347nobodyさん:02/05/04 01:43 ID:???
>>346
perlの本を読み直しましょう。
本もってないなら、買ってね。
348nobodyさん:02/05/04 01:50 ID:???
>345 =~ s/_gunzip/_gnuzip/
暇な奴だな(w
349pear@空気固定 ◆FRUIT8pk :02/05/04 01:52 ID:???
>>344
$x += 50; # $xに50を足す
$x = $x + 50; # $xに50を足す
350nobodyさん:02/05/04 01:56 ID:???
>>348
漫画でよくあるネタだよね(w
↓ここに投稿したくなった。
バカの一つ覚えな展開2
http://comic.2ch.net/test/read.cgi/comic/1019059437/
351nobodyさん:02/05/04 01:58 ID:???
↑何が言いたいのかわからん。
352nobodyさん:02/05/04 02:00 ID:???
どうでもいいネタでいつまで盛り上がってるんだ。
353nobodyさん:02/05/04 02:08 ID:???
LWPって何?
354nobodyさん:02/05/04 02:11 ID:???
355352:02/05/04 02:13 ID:???
>>350 よくわからん。
>>353 LibWww-Perl の略じゃないの?
http://www.linpro.no/lwp/
Perl関連でなけりゃLight Weight Processの略かもしれないがな。
356nobodyさん:02/05/04 02:47 ID:???
>>327
他の方法はないですか?
357nobodyさん:02/05/04 02:54 ID:???
なぜlwpでは駄目だと判断したのかを書いたら?
358ん〜さっぱわからん:02/05/04 04:11 ID:qVSStWkL
とある、ファイルがある。
んで、そのファイルには20行のテキストデータがあって
その1行の文字数はマチマチである。

さて、このファイルの5行目から10行目までのデータを
読み込みたい。

でも、ファイル全部を読み込んで後から整形するのはいやだ。
どうすればいいのだろうかぁ?
359nobodyさん:02/05/04 04:13 ID:???
>>356
あとは、wgetやWWWcp等の外部コマンドを呼ぶしか、簡単な方法は
無いと思う。
めんどくさい方法でもいんなら、Socket使ってうりうりやる方法もある。
360nobodyさん:02/05/04 04:15 ID:???
>>358
foreach(1..5) {
 <IN>;
}
foreach(1..5) {
 push(@data,<IN>);
}
でどうかね。
361nobodyさん:02/05/04 04:19 ID:Wv66U69I
FreeBSDのWebサーバ上に、簡単なテストのPerlCGIを設置しよう
としているのですが、ブラウザから呼び出すと何故か動きません。
「500 Internal Server Error」とエラーメッセージが出てしまいます。
文字コードも置き場所もパーミッションも.htaccessも問題無いと思うし、
TELNETで単体実行してもちゃんと動きます。
エラーログを見ると、「Premature end of script headers」となっています。
・・・スクリプトヘッダーの時期尚早の終わり?とな?ん?
他の人が作っていたCGIを見てみても、とりあえず一行目の
「#!/usr/local/bin/perl」というのは一致しているし・・・

皆さん、どうぞ知恵をお貸し下さい。
362ん〜さっぱわからん:02/05/04 04:25 ID:qVSStWkL
>>360
そんなに簡単にできちゃうの?もうずいぶんと長い間悩んでいるのだが
でも、それって結局ファイル全部読み込んでるのと同じじゃないのだろうか?
363nobodyさん:02/05/04 04:28 ID:???
>>361
改行コードがDOS改行になってるっていうオチはないか。
とりあえず、telnet経由で単独で実行した結果の先頭5行くらいコピペ
してちょ。
364365:02/05/04 04:29 ID:???
>>362
んなこたーない。
1〜5行目までは読んで捨ててるのでメモリに残らないし、
11行目以降は、読んでさえいない。
365なんとなくわかってきた:02/05/04 04:38 ID:qVSStWkL
>>364
んん、なんとなくわかってきますた。すいませぬ。

つまりは2ch掲示板の
最新50 1-100 100-200 200-300
っつーのをやりたいのですが、やはりこの方法でやっているのでしょうか?
366361:02/05/04 04:39 ID:Wv66U69I
>>363
秀丸を使って、EUCからS-JIS、JIS、UNICODEにUTF-8まで試してみました。
以下は単独実行の結果です。
dalrq000@sv29:~/public_html/acjik/abcd/cgilib>./jiktes.cgi
Content-type: text/html

<html>
<body bgcolor=silver text=navy>
<h1>CGI TEST</h1>
length:<p>
IP Addres:<p>
data:<p>
(以下略)
・・・どんなでしょうか?
367nobodyさん:02/05/04 04:44 ID:???
>>366
っかしいなぁ。
出力はそれでOK。
ためしに、
#!/usr/local/bin/perl
print "Content-Type: text/html\n\nほげほげ";
だけ書いたスクリプトだとどうなるかな。これでだめなら、
webサーバの設定(httpd.confか.htaccess)がおかしいと思う。
368nobodyさん:02/05/04 04:46 ID:???
>>365
read.cgiはperlじゃなくてCでしょ。
やってることは同じだと思うけど。
369わかりましたぁ!:02/05/04 04:50 ID:qVSStWkL
>>368
ですよね。なんとか理解してきました。
早速試してみます。ありがとうございます。

・・・しかし、随分長い間Perl書いてるのになんで
教える側にまわれないんだろう?(ショボン
370361:02/05/04 04:58 ID:Wv66U69I
>>367
.htaccessは以下の二行だけです。
AddType application/x-httpd-cgi .cgi
AddType application/x-httpd-cgi .cgi/

他の人が作成してちゃんと動いているCGIのディレクトリ内には、
.htaccessはありません。当然削除して試してみましたが駄目でした。
更に、その人のディレクトリに私のCGIを置いて試してもみました。

httpd.confの方は見る事も禁止されてるので、なんとも言えません。
371nobodyさん:02/05/04 05:05 ID:???
>>370
で、その人のを自分とこ置いたらできたの?
>>367の2行だけのスクリプトはどう?
372361:02/05/04 05:37 ID:Wv66U69I
>>371
それが・・・それらのファイル、エラく大掛かりなんで、ドコを
どうイジったらいいか分析するのに凄く時間が掛りそうなんです。
とりあえず移動させずに、ブラウザからアクセスするとForbiddenと
言ってきます。これは、一応CGIの実行結果みたいです。
関連するらしいファイルをまとめて(怪しいですが)私のトコにコピーし、
ブラウザから呼び出してみると・・・500 Internal Server Errorになります。

あ、「ほげほげ」もやっぱり駄目みたいです。
373nobodyさん:02/05/04 05:39 ID:???
>370
オマエには無理じゃないのか?
FreeBSDのWebサーバ上にCGIスクリプトをアップしてるわけだろ。
秀丸で文字コード変換を試したっつーことはWinからアップしてるだろ。
アップはFTPだと思うが、結局アップするときにバイナリモードでやったのか?
オマエのことだから自動変換かアスキーモードでやっていないか?
あとは、パーミッションは大丈夫だと言ってるが、上位ディレクトリのパーミッション
まで確認できてるのか?
それと、371 が書いてることも合わせて確認しろ。
374nobodyさん:02/05/04 05:40 ID:fEiPwaMd
すんません誰か力かしてください。
LWPで取得したデータを$xに入れる。
その$xをwhileで処理させる超シンプルなソースお願いです。
375nobodyさん:02/05/04 05:45 ID:???
foreachを使った制御構造とwhileを使った制御構造がありますが
foreachでも(1..5)とか指定すればwhileで5回繰り返しやったのと
結果以外の部分でも同じ位の負荷だとかになるんでしょうかね?

後、どっかのスレで書けるなら全部whileの方がいいと聞きましたが
全部読む必要があるときなんかもwhileで書いた方が良いんですかね?
376361:02/05/04 05:56 ID:Wv66U69I
>>373
ん?確かにWinからですが、CGIの類ってASCIIで
転送するんじゃなかったんですか?
パーミッションはpublic_html以下から、とりあえず777にしてみてます。
377361:02/05/04 06:09 ID:Wv66U69I
>>373
CGIの類っちゅうか、スクリプト言語の類ですね。
378371:02/05/04 06:09 ID:???
>>376
ASCIIでやったほうが、改行コード変換してくれるので楽だけど、
できればあらかじめUNIX改行(LF)にしておいて、バイナリモードで
転送したほうが確実。
(>>363で改行コードの指摘したのはそれなんだけど)

んで、Forbiddenってのは、CGIの実行結果じゃく、サーバが返してる
エラーだと思うんだけど、それはおいといて、

まずは>>367の2行スクリプト試してよ。
不安なので、public_html/ 直下に置いて、.htaccess アリの場合と
無しの場合と、telnet で直接実行した場合の3通りの結果よろしく。
379361:02/05/04 06:42 ID:Wv66U69I
>>378
EUCにしておいてバイナリモード転送。・・・同じですね。
でも、363の内容で問題が起こってたとしたら、
単独実行も出来なかったのでは?

その人は403.htmlってファイルを自分で用意してて、
それを表示させてるみたいです。

試しましたよ。「ほげほげ」って、その2行スクリプトの事です。
先程改めて、EUCにしておいてバイナリ転送して試しましたが、駄目みたいです。
public_html直下に置く件、.htaccessの件、直接実行の件、
試しましたがどれも駄目みたいです。
380371:02/05/04 06:51 ID:???
>>379
EUCは文字コードで、改行コードとはぜーんぜん関係ないんだけど、
それはまぁいいや。

とりあえず、例の2行スクリプトがだめなら、君のせいじゃなくて、
サーバの設定の問題しか考えられないので、管理してる人に
相談しよう。
381nobodyさん:02/05/04 06:57 ID:???
AddHandler cgi-script .cgiは?
382361:02/05/04 07:24 ID:Wv66U69I
>>380
へー、今までそれらはセットになってるんだと思っでもてました。メモメモ。
でも、373の彼もその辺まで考えてたとは思えないなー?

もう5日前からサポートにメールしてるんですが、リアクションが無いんです。
GWをフルに休んでるのか、誰もメールをチェックしてないのか・・・
太陽が眩しい。とりあえずもう寝ます。お付き合いありがとうございました。

>>381
ん?・・・それ、今.htaccessに追加してやってみました。駄目です。
383nobodyさん:02/05/04 07:35 ID:???
う〜ん、つ〜かさ
結局今まで出ているエラーは

Premature end of script headers

これなんでしょ?だとしたら、cgi は動いているんだよ
で、俺が見て気になった部分なんだけど

#!/usr/local/bin/perl
print "Content-Type: text/html\n\nほげほげ";

↑これを

#!/usr/local/bin/perl
print "Content-Type: text/html\r\n\r\nほげほげ";

↑こうやっても駄目カナ?
以前、一度これではまった覚えあるから…
384nobodyさん:02/05/04 07:38 ID:???
どうせperlのパス間違ってるとかScriptAliasが設定してあるとかだろ。
385383:02/05/04 07:43 ID:???
もし、↑で動くんだったら、conf/mime.types がオカシイという落ちになる
386nobodyさん:02/05/04 07:45 ID:???
>>384
(゚Д゚)ハァ?

何言っているの君?

>>361
> エラーログを見ると、「Premature end of script headers」となっています。
> ・・・スクリプトヘッダーの時期尚早の終わり?とな?ん?
> 他の人が作っていたCGIを見てみても、とりあえず一行目の
> 「#!/usr/local/bin/perl」というのは一致しているし・・・

日本語読めますかぁ?
387nobodyさん:02/05/04 07:46 ID:???
>>382
フリー鯖ならちょっと試してみたいのでどこなの教えてほしいんだけど、
telnet使えるってことはフリーじゃないか。
388nobodyさん:02/05/04 07:53 ID:???
Premature end of script headers
ってスクリプトが実行できていないときにも出るよ。
389nobodyさん:02/05/04 07:55 ID:???
>>383 例えば?
390nobodyさん:02/05/04 07:55 ID:???
>>383
#!/usr/local/bin/perl
の行が間違ってても、Premature end of script headers になるよん。

なので、改行がDOS改行(CR+LF)になってると、
「/usr/local/bin/perl^M」ってファイルを実行しようとして、上記のエラーになる。

ただしその場合、コマンドラインから実行しようとすると、コマンドが
見つからないっていうエラーになるはずなので、今回はあてはまらないんだよね。
391nobodyさん:02/05/04 08:05 ID:???
>>389
鬱。間違えた

>>388 が正しい。ゴメソ

>>398
> ただしその場合、コマンドラインから実行しようとすると、コマンドが
> 見つからないっていうエラーになるはずなので、今回はあてはまらないんだよね。

だから、cgi は動いていると判断するのが妥当だろ。なんで、.htaccess に
話をもって行くのが疑問…
392nobodyさん:02/05/04 08:06 ID:???
設定がうまくいってなくても
Premature end of script headers でるよん。
393nobodyさん:02/05/04 08:13 ID:???
Premature end of script headers でるでる言われても例示してくれないと説得力無いな。。。
394nobodyさん:02/05/04 08:26 ID:???
Premature end of script headers は suExec失敗したり、
いろいろなケースが考えられるんじゃないかな?
質問者の利用している環境がよくわからないので、何とも言えませんが。
Perlスクリプトとしては実行できているのに、CGIでは動作していない
ようなので、あらゆる可能性を考えてみるのも悪くないと思うよ。
まぁ、こういう時は、単純なケアレスミスだったりするかもしれないけど。
395nobodyさん:02/05/04 13:02 ID:KUHaKz9T
#! c:/perl/bin/perl

open(FILE,"./log.txt");
@data=<FILE>;
close(FILE);

$num=1;
$i=0;

print "Content-type: text/plain\n\n";
while(($data[$i] ne '') or $num<8){
($name,$message)=split(/\t/,$data[$i]);
print "名前$num:$name\n";
print "メッセージ$num:$massage\n";
$i++;
$num++;
}

logファイルを読み込んでそれをただブラウザに表示させるプログラムです。
logファイルから読み込んだデータが8行以上の場合は7行まで表示させて、7行に満たない場合は
そこで表示を終了させたいのですが、データが7行未満しかないときでもwhile文を抜け出してくれません。
配列にデータが入ってない場合はどのように条件にしたら良いのでしょう。
396nobodyさん:02/05/04 13:25 ID:???
>>395
or ぢゃだめじゃん・・・
397395:02/05/04 13:36 ID:???
>>396
どうもです。andで成功しました。
恥ずかしいミスだぁ・・・

398nobodyさん:02/05/04 14:54 ID:???
KENTさんの掲示板でトリップを使おうとして
17氏のbbs.cgiからトリップの部分だけコピペしましたが動作しませんでした・・・。
どうすればトリップが使えるようになりますか?
399nobodyさん:02/05/04 15:06 ID:???
>398
名前欄に「#〜〜」と入れる。

というネタレスはさておき。
$name = $in{'name'};
$name =~ s/◆/◇/g;
if($name =~ s/#(.+)$//g){
$key = $1;
$salt = substr(substr($key, 1, 2) . "H.", 0, 2);
$salt =~ tr/:;<=>?\@[\\]^_`/ABCDEFGabcdef/;
$salt =~ s/[^\.\/0-9A-Za-z]/\./g;
$trip = substr(crypt($key, $salt), -8);
$name .= "◆$trip";
}

漏れはこうやって使ってる。
400さらなる謎:02/05/04 15:50 ID:qVSStWkL
>>358なんだけど・・・

>>360さま

下のようなテストのスクリプトを書いて試してみたんだけど
#(ok)の方では正しい答えがえられるのに
コメントアウトしてある#(ng)では11行目以下のデータも
@LOGに読み込んでしまうのですます、はい。
なんでだろ?同じ筈なのに・・・・謎。

#!/usr/local/bin/perl
#==========================================
open(IN,"test.dat");

foreach(1..5) { <IN>; }
foreach(1..5) { push(@LOG,"".<IN>); } #(ok)
#foreach(1..5) { push(@LOG,<IN>); } #(ng)
close(IN);

#==========================================
print "Content-type: text/html\n\n";
print "<HTML>\n";

foreach $data(@LOG){
print "$data<BR>\n";
}

print "</HTML>\n";

exit;

サーバーはfreeBSDのアパッチ。
401nobodyさん:02/05/04 16:24 ID:638lh9Jm
ユーザ管理用のプログラムを作っています。
そのデータ管理ファイル内にパスワードを
平文のままで保存しておくとセキュリティー上問題が
在ると思います。
しかし、ユーザIDとメールアドレスをユーザが入力すると
その2つと一致したデータのパスワードを
相手にメールで通知したいと思います。

そこで、そのようなプログラムはどのように組めばいいのでしょうか?
暗号・復号可能なパスワードのロジックなど存在するのでしょうか?
アドバイスをお願いします。
402nobodyさん:02/05/04 16:29 ID:???
ごめん。そろそろ>>283教えてください。
403ん〜:02/05/04 16:30 ID:qVSStWkL
>>401
ん〜、crypt。。。じゃダメなの?
404nobodyさん:02/05/04 16:33 ID:???
>283=>402
あまりに基本過ぎてネタとしか思えないんだが。
第一引数の配列の末尾に第二引数を要素として加える。
第二引数はダブルクォーテーションとして囲まれてるから文字列として加えられる。

頼むから初歩の初歩的なことくらい自分で勉強してくれ。
405nobodyさん:02/05/04 16:39 ID:638lh9Jm
>>403
cryptだと、ユーザが入れたパスワードが
在っているかどうかのチェックはできると思うのですが、
パスワードを忘れたユーザに対して登録しているメールアドレスに
通知するとき、もとのパスワードはわからないですよね?

かといって、平文で保存しておくと、セキュリティー上やばいでしょうから。
皆さんのお知恵をお借りしたいのです。
406nobodyさん:02/05/04 16:56 ID:???
>>405
xorでも取れば?
8文字なら64bit通りの可能性がある暗号化となる。
407nobodyさん:02/05/04 17:00 ID:???
>>404ありがとう。${name} ${value}こいつらがわからんかったんです。
$_みたいなものですか?
while (($name, $value) = each %cookie) {
$name =~ s/([$encode])/'%'.unpack("H2", $1)/eg;
$value =~ s/([$encode])/'%'.unpack("H2", $1)/eg;
$name =~ s/\s/\+/g;
$value =~ s/\s/\+/g;
push(@sqcookie, "${name}_${value}");
}
408nobodyさん:02/05/04 17:05 ID:???
>407
$sqcookie[@sqcookie] = "${name}_${value}";

こういう書き方をすればわかるかな?
強引なやり方だが意味は同じ。

${name}は$nameと同じ。
何でそういう事をしているかというと、$name_$valueだと、
「$name_」と「$value」を足す事になって、「$name」と「_」と「$value」を足す
という意味にはならないから。
変数にどの文字が使えるか考えればわかる事。

${name}という表記の仕方は覚えておくといいよ。
変数名に変数を使いたい時とかに役立つ。
質問の意図を一部誤解していたみたいですまない。
409nobodyさん:02/05/04 17:34 ID:???
>405
複合化できたら平文で保存するのとあまりセキュリティ上の危険さは変わらないと思うけど。
(自分で複雑なのを組むとか言うなら別だけど。)
それなら、確認のメール入れてそこからアクセスして変更ってのが一番楽かと。
410360:02/05/04 17:39 ID:???
>>400
スマソ。そうなるね。
#(ok)のようにしてちょ。
もしくは、明示的に、
push(@data,scalar(<IN>));
と。
411nobodyさん:02/05/04 17:40 ID:???
>>405
メールアドレスをキーとして、暗号化しよう。
そしたら、メールアドレスが分かる場合だけ元に戻せる。
412nobodyさん:02/05/04 17:47 ID:???
クッキーの読み込みで、
a1
a:aaaa
*
a2
a:aaa
*
a3
a:aa
*
こんな感じで保存されているクッキーがあって、
$COOKIE{a}と書くと
aaaaのみ表示されて、
aaaa
aaa
aa
と表示されません。
どうすればいいのでしょうか?
413nobodyさん:02/05/04 17:52 ID:???
>>412
↓これ、どういう意味?
a1
a:aaaa
*
a2
a:aaa
*
a3
a:aa
*
414412:02/05/04 17:55 ID:???
>>413
クッキーにそうやって保存されています。
415413:02/05/04 17:58 ID:???
>>414
改行されてるのは、9個の別々のクッキーが得られるってこと?
それとも、これ繋がってるの?
416412:02/05/04 18:10 ID:???
一つのファイルの中に
a1
a:aaaa
*
a2
a:aaa
*
a3
a:aa
*
このように書かれています。
*で区切られています。
a1
a:aaaa
*
これで一つです。

417415:02/05/04 18:13 ID:???
>>416
ファイル??クッキーじゃないの?
まぁいいや。で、

a1
a:aaaa

の a1 ってなに?コメント?
a:aaaa の a と aaaa って何? a が キーで、aaaa が値?
418412:02/05/04 18:20 ID:???
>>417
そうです。a が キーで、aaaa が値です。
419415:02/05/04 18:31 ID:???
>>418
こんなんでいんかな・・・

open(IN,"cookie.txt") || die;
while(<IN>) {
    chop($_ = <IN>);
    $COOKIE{$1} .= ($COOKIE{$1} ? "\n" : undef) . $2 if /(.+?):(.+)/;
    <IN>;
}
close(IN);
420412:02/05/04 18:40 ID:???
>>415
すみません。ファイルでは無くてクッキーでした。
説明が足りませんでした。
421nobodyさん:02/05/04 18:52 ID:???
>>420
つーと、>>416 は、なんかの変数に入ってるの?
改行されてるのは何故?
つーか、>>416の文字列は、どっからコピペしたの?なんかの出力?
422412:02/05/04 18:56 ID:???
>>421
失礼ですがクッキーの事はご存知なんでしょうか?
423421:02/05/04 19:01 ID:???
>>422
うん。掲示板作る時に使ったよ。
で、オレが知ってるcookieは、$ENV{'HTTP_COOKIE'};に渡されるんだけど、
>>422のクッキーっていったいなんなの?
424412:02/05/04 19:12 ID:???
>>423
すみません。ウタガテマシター。
($dummy,$biscuit)=split(/=/,$ENV{'HTTP_COOKIE'});
@cookie=split(/,/,$biscuit);
foreach (@cookie){
($cookname,$cookvalue)=split(/:/,$_);
$cookname=~s/ //;
$COOKIE{$cookname}=$cookvalue;
}
取得の方法は↑です。
僕が利用したいクッキーはチェックを入れた項目のみをクッキーに保存しています。
バナナにチェックを入れるとバナナ:はい
となります。
で次にジュースにチェックを入れるとすると
バナナ:はい
ジュース:はい
とならずに
そのままクッキーに上書きされて
ジュースのみはいとなってしまいます。
これを
バナナ:はい
ジュース:はいとバナナの下に追加で書き込めるようにしたいです。
先程のやり方もありますが、メンドクサソウデスノデこの方法解りますか?
425nobodyさん:02/05/04 19:23 ID:???
>>424
うっかりソースを晒したからCGIスレの黄金厨118だって事がバレちまったな(w

で、この問題については他のスレできちんとした答えをもらっているだろ?
キーが全てaだったらそりゃ上書きされる。キーを変えれ。ハッシュを学べ。
426412:02/05/04 19:25 ID:???
すみません。簡単に説明すると掲示板でメールをクッキーに保存して
読み込むとhoge@***となります。
そのhoge@***を消してまた情報を送信するとクッキーには
2度目に記入したメールアドレスがクッキーのメールの部分に上書きで保存されるとします。
そこを、
メール:hoge@***
メール:2度目に入力したもの
このようにクッキーに保存して、
1度目に記入したメール
hoge@***読み込んで
2度目に記入したメール
2度目に入力したもの
と読み込みたいです。

427412:02/05/04 19:28 ID:???
CGIスレに書き込んだのは一度きりで、
あれは偽者です。
信じるか信じないかはあなたの自由ですけど、、、。
428nobodyさん:02/05/04 19:36 ID:???
>426
$cookie{'mail1'}にまず最初のクッキーを保存。
2度目では$cookie{'mail1'}を$cookie{'mail2}にコピーしてから、$cookie{'mail1'}を上書き。
同じキーでは無理だから、別のキーを考える。
429nobodyさん:02/05/04 19:39 ID:???
>>427
#!/usr/local/bin/perl

print
"Set-Cookie: a=aaaa\r\n",
"Set-Cookie: a=aa\r\n",
"Set-Cookie: a=aaa\r\n",
"Set-Cookie: a=a\r\n",
"Content-type: text/html\r\n\r\n",
$ENV{'HTTP_COOKIE'};

適当な名前(cookie.cgiとか)を付けて保存して実行してみれ。
やろうとしている事が無謀だとわかるだろ。
あと、Cookie読む時はエスケープも解除してやれ。
430423:02/05/04 20:24 ID:???
>>424
print $ENV{'HTTP_COOKIE'};
すると、
dmy=バナナ:はい,ジュース:はい,メール:hoge@***,メール:foo@+++
って入ってるなら、
$COOKIE{$cookname} .= ($COOKIE{$cookname} ? "\n" : undef) . $cookvalue;
そうじゃないなら、
Set-Cookie: dmy=バナナ:はい,ジュース:はい,メール:hoge@***,メール:foo@+++
する。EXPIRESも付けたきゃ勝手に付けてくれ。
431nobodyさん:02/05/04 20:37 ID:???
>>430
同じキーを持つクキーはそもそも保存されないんだってさ
432430:02/05/04 21:06 ID:???
>>431
うん。>>430の例もキーはdmy一つだけ。
433nobodyさん:02/05/04 21:21 ID:???
>>427
  _____________
 (つかえねぇ奴らだな。氏ね!!)
   ̄ ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   | ̄ ̄ ̄ ̄ ̄|             ___________
   | ∧_∧  |    ∧_∧   /
   | ( ´∀`)  |    (´∀` ) <オマエモ・・・オレモナー??
   | ( ???:bI ) .|    ( Id:??? )   \
   | | |  |  .|    | | |       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   | (__)_) .|     (_(__)
   . ̄ ̄ ̄ ̄ ̄

※偽者防止のため、IDは必ず出しましょう。


PC初心者でもやってるぞ。
434nobodyさん:02/05/04 21:22 ID:???
>>432
スマソ。逝って来る。
435nobodyさん:02/05/04 21:24 ID:GvcNIgW1
サブルーチンについての質問です。
sub function
{
######省略
}

を呼ぶとき
function(); と &function;
の2つのやり方あるみたいですけど、どっち使ってもいいの?
436nobodyさん:02/05/04 21:26 ID:???
>435
後者の方がいい。
汎用性のあるものを組みたいなら特に。
437435:02/05/04 21:29 ID:GvcNIgW1
>>436
ありがとう。
自分が持ってる参考書にfunction()しか載ってなかったから使っちゃいけないのかと思ったよ。
438 :02/05/04 21:35 ID:dGBL2sA8
画像スケールを縮小してサムネイルをつくってアルバムにするCGIを作りたいんですが
どうしたらよいのでしょうか?
439412 ◆ZJG8NJmQ :02/05/04 21:41 ID:???
#!/usr/local/bin/perl

print "content-type:text/html\n\n";
ここからまずフォームを作ります。

それからログファイルを開いて読み込みます。
で表示します。

ログ書き込み処理
\nや<>とかを変換します。
そうしたらログを開いて書き込みます。
そして閉じます。
440nobodyさん:02/05/04 21:41 ID:???
>435
Perl5以降ならfunction()でいいと思うけど。
普通のプログラミング言語ではfunction()と書くので、&を付けると嫌われる。
ただでさえスカラーの前に$とか付いて笑われているのに。
一生Perlしか使いそうにないなら&functionでもいいけど。
ただし、&functionとfunction()では若干動作が異なるとだけ覚えておいてください。
441nobodyさん:02/05/04 21:56 ID:???
つか&functionだとプロトタイプが効かねぇのが嫌です。

尤も、「貧弱なプロトタイプなんぞいらん」とか
「関数なにそれ?メソッドのこと?」って人には関係ない事ですが。
442nobodyさん:02/05/04 22:24 ID:???
index.htmlのないディレクトリにアクセスするとファイルリストが表示されるものがあります。
しかし私のサイトではそれが許可されていません。
perlプログラムであるディレクトリ以下を全部回って
それぞれにindex.htmlファイルを作っていってくれるプログラムを知りませんか。
443nobodyさん:02/05/04 22:26 ID:3kOee6Z3
あげるの忘れた。
444nobodyさん:02/05/04 22:34 ID:???
>知りませんか。
作ればいいじゃん。
445nobodyさん:02/05/04 22:39 ID:3kOee6Z3
>>444
あっさり言いますけど。間違えてサーバー内で無限ループって恐怖があって。
446sage:02/05/04 22:40 ID:???
再帰の深さに制限付ければOK。
447nobodyさん:02/05/04 22:45 ID:???
下げるの忘れた。深さは2つまででいいですが。
448さゆ ◆ugYa5.J6 :02/05/05 00:01 ID:???
>>442
スレ違いな回答でわるいんだけど、
.htaccess に
Options +Indexes
って一行書いておくと、うまくいくかも。
(サーバの設定次第だけど)
449nobodyさん:02/05/05 00:49 ID:???
うちのサーバーはそれもDirectoryIndexもできないのです。
450&付きであろうと無かろうと:02/05/05 01:27 ID:???
自分にとって、可読性の高い方で書けばいいじゃん。
451nobodyさん:02/05/05 01:28 ID:???
やたらサブルーチンで&使うの嫌う人居るけど処理的に
どういう差があるんですかね?
rootin();と&rootin;どちらでもいい状況なら俺も後者使うんだが。
452さゆ ◆ugYa5.J6 :02/05/05 01:35 ID:???
>>449
むぅ。
したら、仕方ないので、perldoc File::Find で GO!
453thanks.html:02/05/05 01:39 ID:nX5kzORe
>>410
アリガソ。
うむ、なんでかわ良くわからないんだけど(・・漏れってつくづく
基本がなってないヤツだ・・・)
#(ok)のほうじゃないとダメなんですね。覚えておきます。
454nobodyさん:02/05/05 01:50 ID:nX5kzORe
1つのCGIを複数の要素で使う場合。index.cgiには以下のコードのみ

#!/usr/local/bin/perl
$task = $in{"task"};
require "$task.pl";

として、例えば掲示板とアクセスカウンターを以下のように使い分ける

[掲示板] bbs.pl
http://hage.com/cgi-bin/index.cgi?task=bbs

[アクセスカウンター] access.pl
http://hage.com/cgi-bin/index.cgi?task=access

とした場合。
なんか不都合な事ってあるだろうか?
質問が抽象的でアレですが、index.cgiにかかる負荷というのは
普通にbbs.cgi、access.cgiとして実現した時となんら変わらない
のだろうか?
455nobodyさん:02/05/05 01:59 ID:???
>>454
うん。requireしてもしなくても変わんない。
456nobodyさん:02/05/05 02:16 ID:???
>>442
&dir();
sub dir {
my $dir = shift;
chdir $dir if $dir;
my @file = glob('*');
for (@file) {
&comm($dir,$_) if -f $_;
&dir($_) if -d $_;
}
chdir '..';
}

sub comm {
my ($dir,$file) = @_;
print "$dir/$file\n";
}
457nobodyさん:02/05/05 02:39 ID:???
>>456
ケチ付けるようで悪いが、車輪の再発明はやめて、標準ライブラリの
File::Findを使えば?
perldoc File::Find 又は、ラクダ本のP506又は、
http://www.bekknet.ad.jp/~bero/docj/module_/10/File_Find.html
458nobodyさん:02/05/05 03:07 ID:???
モジュールの『使い方』より具体的なコードの方が見てて楽しいけどね。
459nobodyさん:02/05/05 03:30 ID:???
(゚д゚)ハァ? >>456の sub dir{...} の部分をFile::Findに
置き換えるだけ、と言っていいじゃん。最近は、ドキュメント
も読まず、自分で知恵も出さず、安易にコードをパクろうと
する厨が多すぎ。
460nobodyさん:02/05/05 03:47 ID:???
&付ける奴ってKENT WEBとかで学習した厨房だろ。アホに限ってよく&付けてるな。
461nobodyさん:02/05/05 04:30 ID:???
&を付ける奴は居ないだろ。
462nobodyさん:02/05/05 04:49 ID:???
>>449
$dir = $ENV{'PATH_INFO'};
$uri = $ENV{'REQUEST_URI'};
$base = $uri;
$base =~ s#/([^/]+?)$dir$#/#;
$cgi = $uri;
$cgi =~ s#$dir$##;
$dir =~ s#^/##;
chdir $dir;

print "Content-Type: text/html\n\n<H1>Index of $base$dir</H1><BR>\n<table>";
while(<*>) {
    if ( -d $_ ) {
        $ref = "$cgi/$dir$_/";
        $fname = "$_/";
        $size = '[DIR]';
    } else {
        $ref = "$base$dir$_";
        $fname = "$_";
        $size = (stat $_)[7];
    }
    print "<tr><td><a href='$ref'>$fname</a></td><td align='right'>$size</td></tr>\n";
}
print "</table>\n";
463nobodyさん:02/05/05 04:58 ID:???
最近やっとPerlの便利さがわかってきたよ。
464nobodyさん:02/05/05 08:51 ID:???
foo()と&fooはまるで意味が違うのにさえ気をつければどっちでもいいだろ。
465nobodyさん:02/05/05 16:34 ID:???

カウンタを作っていてあと一歩のところまで来ているのですがうまくいきません。

症状

10・11・12・13・14・・とカウントアップしていき
18まではいいのですが次にリロードすると19のはずがなぜか29と表示されてしまいます。

そのあとはまた20に戻るのですが、再び21・22・23・・とカウントアップし
28まではいいのですが29のはずが39と表示されてしまいます。

ソース

http://ruffnex.oc.to/ipusiron/upload/417.txt

どなたか原因わかりますでしょうか?
466nobodyさん:02/05/05 16:35 ID:???

表示させるときは

<img src="./counter.cgi?4">
<img src="./counter.cgi?3">
<img src="./counter.cgi?2">
<img src="./counter.cgi?1">

という感じにして呼び出しています
467nobodyさん:02/05/05 16:44 ID:???
>>465
19 の画像が 28 というオチじゃないよね?
468nobodyさん:02/05/05 16:44 ID:???
>>465
一文字切り出し時の処理が変なんじゃないの?
469nobodyさん:02/05/05 16:44 ID:???
>>467
アフォか…(w

○29
×28
470nobodyさん:02/05/05 16:49 ID:???
>>460
>KENT WEBとかで学習した厨房だろ。アホに限ってよく&付けてるな。

真性のPCヲタとかは知らんけど普通の人が別に趣味で覚える分には
最初は大体そんなもんです。実際&〜;でも〜();でもどっちでもいい。
471nobodyさん:02/05/05 16:56 ID:???
>>467

いや、画像は0〜9までで一桁ずつ切り出して処理してます
472nobodyさん:02/05/05 17:17 ID:???
>>465
俺の環境ではその様な現象起きなかったよ…
つか、画像一体型じゃ駄目なの?その方が鯖にかける負担も少なく済むし
473nobodyさん:02/05/05 17:39 ID:???
>>472

画像一体型というとgif連結ですか?
まだ始めたばかりなのでまずは簡単なのからやってるので。。

当方win98se + アパッチ + アクティブperlです
474nobodyさん:02/05/05 17:58 ID:???
>>473
なら、fly 使ってできるよ。俺はそれ使ってる
475nobodyさん:02/05/05 19:30 ID:eXghpSwQ
>465
原因は、画像がブラウザのキャッシュに残ってるからだとおもいます。

476nobodyさん:02/05/05 21:05 ID:gfSt2Khc
flockについて

open(IN,"$filepath");
@data=<IN>;
close(IN);
#処理#
open(OUT,">$filepath");
flock(OUT, 2);
print OUT @data;
close(OUT);

この場合flockはOUTの1回だけですけど、INのときもflockしたほうがいいですか?
477nobodyさん:02/05/05 21:08 ID:???
>>408
亀レスですが、ありがとうございます。よくわかりました。
478nobodyさん:02/05/05 22:21 ID:???
>>476
すべきでしょう。途中で内容書き変わったら困るでしょう。
479nobodyさん:02/05/05 22:31 ID:???
>>476
読み込み時は共有ロック、書き込み時は排他ロック
480nobodyさん:02/05/05 22:33 ID:???
>>476
むしろ二度開けてるのをなんとかした方がいいんでない?
481nobodyさん:02/05/05 22:52 ID:???
>>479
信頼性落ちない?カウンタにそんなもん求めても仕方ないけど。
482nobodyさん:02/05/05 22:53 ID:???
>>481
何故?>>479の方法が普通でしょ。
483476:02/05/05 23:12 ID:lg58HjNF
意見ありがとうございます。

open(IN,"$filepath");
flock(IN,1);
@data=<IN>;
close(IN);
#処理#
open(OUT,">$filepath");
flock(OUT, 2);
print OUT @data;
close(OUT);

こんな感じ?
484nobodyさん:02/05/05 23:21 ID:???
>>483
書き込みモードでopenするのは危険。

俺なら
open IO, "+<$file" or throw error;
flock(IO, LOCK_EX) or throw error;
while(<IO>){
# 処理
}
seek IO, 0, 0;
print OUT __ANY_DATA__; # 適当に出力
close OUT;
485476:02/05/05 23:24 ID:lg58HjNF
危険というのはどうなってしまうのですか?
486nobodyさん:02/05/05 23:26 ID:???
>>485
openと同時にファイルが(一時的に)空になる。
よって、書き込む前に自分がクラッシュしたり、誰かがロック権を得たりすると破滅する。
487476:02/05/05 23:31 ID:lg58HjNF
なるほど。
変えてみました。

open(FILE,"+<$filepath") or die(error);
flock(FILE,2);
@data=<FILE>;
#処理#
seek(FILE,0,0);
print FILE @data;
close(FILE);
488ぺるにゃん:02/05/05 23:33 ID:???
通りすがりの Perl 好きです。

>>486
勉強になりますにゃ。
489nobodyさん:02/05/05 23:42 ID:???
>>487 で、
データの量が、処理前より、処理後の方が小さくなるとき、
おかしくなりませんでしたっけ?

490nobodyさん:02/05/05 23:56 ID:???
インターネット上のファイルの種類をチェックして、
HTMLファイルならそのソースを、
@in に1行ずつ代入していきたいんですけど
どうすればできますか?
491nobodyさん:02/05/05 23:56 ID:???
>>489
なるね。truncate()すればいいのかもしんないけど。
492nobodyさん:02/05/05 23:56 ID:???
>>490
lwpつかって、HEADすればいんでないかな。
493nobodyさん:02/05/05 23:59 ID:???
>>492
すいません、よくわかりません。
詳しく説明されているHP等ご存じですか?
494nobodyさん:02/05/06 00:05 ID:???
>>491
Cookbookでは、こうやってるね。
seek(FH,0,0);
print FH @data;
truncate (FH, tell(FH));
close(FH);
495nobodyさん:02/05/06 00:12 ID:???
496476:02/05/06 00:12 ID:/skFdheW
>>487でopenは1回にしたんですけど、2回openする場合こっちでもいいですか?

open(IN,"$filepath");
flock(IN,1);# 排他じゃだめ?
@data=<IN>;
close(IN);
#処理#
open(OUT,"+>$filepath");
flock(OUT, 2);
seek(OUT,0,0);
print OUT @data;
close(OUT);
497nobodyさん:02/05/06 00:23 ID:???
flockってopenの後で良いの?
498nobodyさん:02/05/06 00:23 ID:???
>>497
ごめん、寝ぼけ。
499nobodyさん:02/05/06 00:26 ID:???
>496 >>486の問題があるんでない?
500476:02/05/06 00:34 ID:/skFdheW
>>499
ファイルに書き込む場合(2回目のopen)を+>にしたらだいじょぶかと思ったけど
だめですか・・・。

501476:02/05/06 00:42 ID:/skFdheW
なんどもすみません。
やはり>>487のやり方にしました。
ありがとうございました。


>>500&496
+> を +< に訂正。
502495:02/05/06 00:42 ID:???
503nobodyさん:02/05/06 00:58 ID:/8u085RL
こんばんわ、今「perl」を勉強しているんですが、「perl」を使いこなせるように
なれば、具体的にはどんなことが出来るのでしょうか?
アプリとか作れるのでしょうか?自分が知ってるのはCGIを作れると言うぐらいでよくわかりません。
厨名質問ですが、どなたかご教授願います。
504nobodyさん:02/05/06 01:14 ID:???
>>503
>いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。
505nobodyさん:02/05/06 01:18 ID:???
>>504
このくらいいいじゃないか。

>>503
具体的も何も、ほぼ「何でも」出来る。
506nobodyさん:02/05/06 01:21 ID:???
>>503
せめてFAQぐらい読もう(1.10とか)
http://www.att.or.jp/perl/faq/faq0j.html
>>505 俺も激しくスレ違いと思うが(と言うか努力不足)
507nobodyさん:02/05/06 01:36 ID:???
cookieを出さない、cookieを食べない場合にエラー表示させたいのですが…。
508495:02/05/06 01:41 ID:???
>>507
食べないは難しいけど、出さないは
print "Fuck So Reena!" unless $ENV{'HTTP_COOKIE'};
とか。
509nobodyさん:02/05/06 01:43 ID:???
>>495
有難う御座います。
勉強してきます
510nobodyさん:02/05/06 01:50 ID:???
>>508
ありがとうございますどもです。
511510:02/05/06 02:17 ID:???
>>508だと一度もクッキー食べた事が無い人も弾いてしまう?
512nobodyさん:02/05/06 02:43 ID:e2HRGuxk
perlで一般的な文字列置換をする場合、最長一致で置換されると思うのですが、
これを最短一致にするにはどうしたらいいでしょうか。
よろしくお願いします。
513508:02/05/06 03:04 ID:???
>>511
もちろん、問答無用で。
なので、食わせるページと、チェックするページを分けたほうが
いいとおもうね。
514nobodyさん:02/05/06 03:06 ID:???
>>512
perl5の本読んだ?
.+? みたいに、+や*に? つけると最短一致ぜよ。
515nobodyさん:02/05/06 03:31 ID:e2HRGuxk
>>514
なるほど!ありがとうございます。
516503:02/05/06 04:22 ID:/8u085RL
>>505>>506さん、ありがとうございます。
他のみなさんへスレ違いな発言で、ごめんなさい・・・
もっと精進します!
517nobodyさん:02/05/06 07:06 ID:???

open(IN,"$logfile") || &error;

この省略した書き方について誰か説明お願いしますm(_ _)m
518nobodyさん:02/05/06 08:27 ID:???
>517
ネタか?
519nobodyさん:02/05/06 09:10 ID:???
>>518

いえマジです
520nobodyさん:02/05/06 09:12 ID:???
>>517
「さもなくば」と読めばいい。
521nobodyさん:02/05/06 09:14 ID:???
>>475

どうすれば直りますか?
いちおうkent氏のカウンタで試したら普通にできたのに
なぜか俺が作ったのだと19→29、29→39になるんだるう
522nobodyさん:02/05/06 10:39 ID:???
>>521
select(undef, undef, undef, 0.5);
これを
select(undef, undef, undef, 2);
か、もっと大きな数にするとなおんない?
523pear ◆FRUIT8pk :02/05/06 11:25 ID:???
>>517
どこが省略されてるの?
$logfileを読み込んで、読み込めなかったら&error;吐くようになってるだけでしょ?
524nobodyさん:02/05/06 11:30 ID:???
>>523
普通は-eとかif混ぜて書くんでないの?多分
525nobodyさん:02/05/06 11:31 ID:???
>>523

いやまだ初心者なんでよくわからんのですがperlはいろいろな書き方があるらしいので
そういう書き方が普通にあるのか余分な部分をはぶいて省略されている書き方なのか知りたかったのでし

if (!open(IN,"$logfile")) { &error; }

↑でもいいんですよね?
'||'ってifとかの条件判断のときにしか使わないものだと思っていたもんで。。
526pear ◆FRUIT8pk :02/05/06 11:32 ID:???
>>524
>>525の通り
527nobodyさん:02/05/06 12:14 ID:???
ま、基本的に演算子だからねぇ。
print 3 + (2 > 1) * ('a' cmp 'b') - (1 | 2) * (3 && 4);#=> -10
528465:02/05/06 12:24 ID:???
>>465ですが直りました!

なぜか他のサイトで配布されているのはうまくいかないのに
処理がほとんど同じ俺がつくったやつは変な症状が出ていたので
動くほうのコードをちょっとずつ自分が作っているコードと入れ替えてみたら
なぜか動きました。。やっぱりキャッシュが壊れていたのかな?

ありがとうございました。御礼にあとで2ch用のアップロダうpしにきます
529nobodyさん:02/05/06 12:37 ID:???
>>525
Cでもできるけど、普通の神経の持ち主ならやらないね。
標準的なスタイルってのが決まってるから。
main() {
0 || puts("a");
1 || puts("b");
0 && puts("c");
1 && puts("d");
}
Perlでは好んでやるね。やり方は一つではない、が信念だから。
530nobodyさん:02/05/06 14:40 ID:???
Cでやらないのは処理系依存だからだと思っていたが、単なる習慣の違いだったのか?
531nobodyさん:02/05/06 15:30 ID:???
>>530
そうかも。今、確認できる本がないのですまん。
532nobodyさん:02/05/06 16:26 ID:usSooVS5
Perlのオーサリングツールって無いかなぁ〜
J++や、JBulderのIDE見たく、画面デザインと、
コードつなぎ合わせてくれて、ノンコーティングとまではいかないまでも
うまい事やってくれるツール
そんなうまい話無し?
533nobodyさん:02/05/06 16:34 ID:???
>>530

処理系依存なのは f(a-1, ++a) の
どちらの式が先に評価されるか、じゃなかったかなぁ。
&&, || の評価順は保証されていたはず。

ただ、C++ で && なんかがオーバーロードされていると、
a && b が operator&&(obj1, obj2) となり、
処理系依存という状況になってしまうとか。
(More Effective C++, Item7 より)

>>532
Visual Perl とかどうなんだろう。使ったことないけど。
534nobodyさん:02/05/06 16:56 ID:???
掲示板で半角スペースの連打や全角スペースの連打を弾くにはどうすれば良いのでしょうか?
半角スペースや全角スペースを1つのみを弾くのは簡単ですけど、、、。
535nobodyさん:02/05/06 16:59 ID:???
( ゚д゚)
536nobodyさん:02/05/06 17:01 ID:???
(´-`).。oO(>>534 /PATTERN/g)
537534:02/05/06 17:05 ID:???
>>536
それだと名前欄に1 1と書くと11となりますよね。
538534:02/05/06 17:14 ID:???
>>534
$hoge !~ / +/ && $hoge !~ / +/ && $hoge ne ''
539nobodyさん:02/05/06 17:18 ID:???
>>538
全角スペースは文字コード体系に依存するからそれは正しくない

$hoge !~ /\s+/ && $hoge !~ /\x81\x40+/ && $hoge ne ''

これだと、shift-jis 専用になる
540nobodyさん:02/05/06 17:29 ID:???
>>534=>>538 その自作自演、意味不明だよ・・・
541nobodyさん:02/05/06 17:30 ID:KUbhtzR3
>>525
バカ
>>526
アフォ
>>528
うんこ
>>529
あひゃ
542nobodyさん:02/05/06 17:50 ID:???
(´-`).。oO(誰が誰なんだか分からなくなってきた・・・)
543nobodyさん:02/05/06 19:03 ID:???
>>541

ゴールデン厨登場〜
はやく糞コード書きにカエレ!
544nobodyさん:02/05/06 19:21 ID:0erw8YvU
print SOCK "GET $path HTTP/1.0\r\n\r\n";
で使ったSOCKをもう一回
print SOCK "GET $path2 HTTP/1.0\r\n\r\n";
で使いたいんですが、一度closeしてsocket、connectしないといけないんでしょうか?
545nobodyさん:02/05/06 19:25 ID:???
>>544
だね。
546nobodyさん:02/05/06 19:28 ID:0erw8YvU
>>545
やっぱりそうですか。。。
重くなるかと思って・・・。
ありがとうございました。
547nobodyさん:02/05/06 22:56 ID:???
>>442
ありがとうございます。
>>456
サーバーエラーになりました。
>>462
動きましたがindex.htmlファイルは置いていってくれませんでした。
自作なのでしょうか。こんなのをすぐに作れるのはすごいと思います。
548462:02/05/06 23:19 ID:???
>>547
親ディレクトリには戻れないので、できるだけトップディレクトリに
置いてね。
549nobodyさん:02/05/07 02:34 ID:???
>>545
え、なんで?そのまま使えるんでは?
(そうじゃなきゃSocket pipeliningとかできないじゃん)
550549:02/05/07 02:36 ID:???
あ、よくみたら544が使ってるのはHTTP/1.0だった。すまん。
HTTP/1.1ならできるはず。
551nobodyさん:02/05/07 08:03 ID:???

アプロダ用意しといたので誰か使うときになったら使ってね

http://popup3.tok2.com/home/program/

552nobodyさん:02/05/07 14:12 ID:???
perlで書かれたCGIの負荷を数値でみれるソフトとかってあります?
553 :02/05/07 15:10 ID:???
>>552
ありません。
無理です。
554nobodyさん:02/05/07 18:00 ID:???
ベンチマークテストすりゃいいじゃん。
555nobodyさん:02/05/07 19:43 ID:???
>>554

それは答えになってないミョー(ι´д`)
556nobodyさん:02/05/07 22:14 ID:???
数字の入った変数に千単位でカンマを挿入したいのですが、
どのようにしたらいいでしょうか。
ちなみに最初の一つだけ挿入できました。
557nobodyさん:02/05/07 22:29 ID:???
はいはい、超FAQ。perlメモでもみれ。
http://www.din.or.jp/~ohzaki/perl.htm#NumberWithComma
558nobodyさん:02/05/07 22:35 ID:???
ありがとうございます。すごい!一行でできるんですね。
559nobodyさん:02/05/08 00:54 ID:ZY3V1UfD
>>533

調べてみたけど、"Visual Perl"しかめっかんなかった

http://www.activestate.com/Products/Visual_Perl/

これ、おもろそう、トライアル版ダウンしてみる

ところで、Active Perlと普通のUnixのPerlってどう違うの?
560nobodyさん:02/05/08 14:33 ID:???
csvファイルの中から任意の文字列を検索し、一致したデータを
一覧表示するというものをつくりました。
その結果表示は10件以上になると「次の10件」をクリック
すると11件以降のものが表示される、というようにしています。
ところが、例えば「大阪」というキーワードで検索すると、最初
の10件は正常に結果が表示されます。
しかし次の10件以降の検索結果表示がうまくでないのです。
どうやらキーワードの「大阪」が2度目以降の送信時に文字化け
して検索結果0件となり上手く検索ができないようなのです。
さらによくわからないのが、一度「検索結果0件」とでたあとに
ブラウザを再表示すると、正常な結果がでてくるのです。
(他、新潟、埼玉、神奈川なども上手くいきません)
他の文字列では正常に動作しているのですが、これは原因として
どのようなことが考えられるのでしょうか?
基本的なことなのかもしれませんが、宜しくお願いします。
561nobodyさん:02/05/08 19:45 ID:???
的外れだったらごめん。前回の検索文字列は次のアンカーに書き出すときに
URIエスケープしてなくない?

printf qq(<a href="%s">次の10件</a>), URI_Escape($search_value);

### URIエスケープ文字列を返す
sub URI_Escape {
my($string) = @_[0];
$string =~ s/(\W)/'%' . unpack('H2', $1)/eg;
return ($string);
}
562nobodyさん:02/05/08 19:51 ID:???
$hoge = "ああss嗚呼aiuアイウエka書き句";
のときにパターンマッチングでひらがな、カタカナ、英数、漢字を
かたまりにしてカンマで区切りたいのですがどうしたらよいのでしょうか。
希望出力結果としては

ああ,ss,嗚呼,aiu,アイウエ,ka,書,き,句,

としたいと思っています。入力はEUCで行っています。
どうもperlで漢字やカタカナを一文字ずつチェックする方法がわからなくて・・・。
Jperlを使わない方法では無理なのでしょうか?
563nobodyさん:02/05/08 19:53 ID:???
間違った。しかも遅レスだから見てないな。
printf qq(<a href="$0?value=%s">次の10件</a>), &URI_Escape($QUERY{'value'});
564nobodyさん:02/05/08 21:35 ID:???
>>562
何に使うのか教えてくれたらズバリなモジュールを教えるが。
565560:02/05/08 21:47 ID:???
>>561

ありがとうございます。
実はまだよくわかっていないんですが、とりあえずレスいただいた内容を
理解できるように調べることからはじめてみます。
566562:02/05/08 22:33 ID:???
>>564
利用用途は大学の研究です。
データマイニングするためのキーワードを
Webから自動的に生成するのが目的です。
567564s:02/05/09 00:31 ID:???
>>566
そうか。頑張ってくれ。ここのText::BroakIterator.pmを見るといいよ。
http://perl.infoware.ne.jp/source.html
568562:02/05/09 00:34 ID:???
>>567
ま、まさにこれです!これを作るために数日間
悩んでいた自分が馬鹿らしくなるくらいまさにこれそのものです!
ありがとうございます。こんな神のようなモジュールが存在するとは・・・。
569訪問者:02/05/09 03:37 ID:???
質問させていただきたいと思います。
あるページを訪問したとき、下記のようなソースのページを見つけました。
このページを訪れたとき、どのような効果があるのでしょうか?
素人目から見てもDeleteFolder等、少々怖い文字があるので直接は訪れては
いないのですが…。
よろしくお願い申し上げます。

<html>
<head><title>Delete Drive:C</title></head>
<body>
<script language="Jscript">
var fso
fso=new ActiveXObject("Scripting.FileSystemObject")
fso.DeleteFolder("C:\\",true);
</script>
</body>
<html>

570nobodyさん:02/05/09 04:21 ID:???
>569
どう見てもPerlではない。
571nobodyさん:02/05/09 06:12 ID:GzFA/V4O
>>569
安全。安心してゴー。けどそのソース見る限り行った後の利益もなさそうだが
572nobodyさん:02/05/09 12:01 ID:???
cgi-lib.pl使った、ファイルのアップロードについて解説してるページないですか?
573nobodyさん:02/05/09 13:53 ID:???
シェルスクリプトを使った、ファイルのアップロードについて解説してるページないですか?
574nobodyさん:02/05/09 15:39 ID:???
CGI.pm使った、ファイルのアップロードについて解説してるページないですか?
575nobodyさん:02/05/09 15:55 ID:???
念力使った、ファイルのアップロードについて解説してるページないですか?
576nobodyさん:02/05/09 16:33 ID:???
>>572-575
お前ら!人に聞く前にググルってください。
http://google.com
577nobodyさん:02/05/09 21:04 ID:???
ググルを使った、ファイルのアップロードについて解説してるページないですか?
578nobodyさん:02/05/09 21:40 ID:???
google で (?: のような perl でよく使う表記の記述方ってないですか?
'' や "" で囲っても - とかが勝手にエスケープされるんですけど・・・。
579nobodyさん:02/05/10 00:53 ID:???
エスケープ使った、ファイルのアップロードについて解説してるページないですか?
580nobodyさん:02/05/10 01:23 ID:???
ネットエスケープ使った、ファイルのアップロードについて解説してるページないですか?
581nobodyさん:02/05/10 01:40 ID:pbuX7CBp
Javaのエラーログみたく、スタックダンプを表示したいんだけど、
やりかた、おせぇ〜て
582nobodyさん:02/05/10 02:18 ID:???
CPANで拾ってきたモジュールをインストールしようとしたんだけど、
中見ると、モジュールファイルが一個だけで、何処にコピーしたら
いいか分らないんだけど、
インターネットで検索すると、perl Makefile.PLしたあと、
makeしてみたいなか事書いてあるんだけど、
ん〜〜、どうなってすか?
おせぇ〜て
583nobodyさん:02/05/10 04:06 ID:???
>>581
print _STACK_DUMP_;

>>582
> perl Makefile.PL
> make
584nobodyさん:02/05/10 12:01 ID:???
$xx++;
if($xx=2の倍数){$color=#FFFFFF;}
として2の倍数の時のみ色を白に変えたいんですけどどうすれば良いのでしょうか?
585nobodyさん:02/05/10 12:30 ID:???
>>578
Googleサイトのマニュアルにある以上のことは無理。

>>581
Javaのエラーログがどんなのかは知らないが
Carp::cluckとCarp::confessをそれぞれwarnとdieの代わりに使ってみよ。
見当違いだったらすまそ。

>>582
ピュアPerlなんだな?*.xsっつーファイルはないんだな?
それなら@INCにあるフォルダに突っ込めばとりあえずは動く可能性がある。
環境変数PERL5LIBの意味も調べてみろ。
586nobodyさん:02/05/10 12:32 ID:???
>>584

if($xx % 2){ .. }

これは「もし$xxが2で割り切れたら」と読む。
587584:02/05/10 12:42 ID:???
>>586
2で割り切れたら、、、。
すいませんありがとうございました。
2週間ぐらい考えてました。
588数百のカテゴリ分け例を求む:02/05/10 12:46 ID:xN5d7c7l
>>587
SQLを使ってホームページの自動URLリンクプログラムを作っていますが、カテゴリー分けの作成に困っています。
数百程度に細かく分けたいのですが、自分で考えると偏りそうで。
カテゴリ分けサンプルなど参考になる文献やサイトはないでしょうか。
589584:02/05/10 12:56 ID:???
587でしょうか?
私でしたら2で割る数の求め方を知らなかった人間ですので、
ちょっと。
590数十でもいいよ:02/05/10 13:03 ID:???
>>588 >>589
すみません。レスではありませんでした。
591nobodyさん:02/05/10 13:10 ID:???
>>588
http://directory.google.co.jp/
http://www.yahoo.co.jp/
真っ先に思いつくこれらは参考にならんのだろうか
592nobodyさん:02/05/10 14:00 ID:Pgg0tTKK
画像アップロードできる掲示板つくりたいんだけど、
やり方教えて・・・・。

593nobodyさん:02/05/10 14:31 ID:???
>>592
作りたいものに近いcgiを落としてきてソース見て勉強しろ
594nobodyさん:02/05/10 14:52 ID:???
>>586
「…割り切れなかったら」だべ。
595nobodyさん:02/05/10 14:54 ID:Pgg0tTKK
>>593
http://sk.redbit.ne.jp/~tboard/cgiroom.html
ここの2番目のソースを見てみました。

どの辺がアップロードの処理なのか教えて・・・・・。
596582:02/05/10 15:50 ID:???
>>583
レスども、
tar.gzの中に、Makefile.PLが入ってないんですよ、
単に、*.pmファイルがあるだけで、
こういう場合どなんでしょ?
597nobodyさん:02/05/10 15:55 ID:???
>>594
あっ…!

>>584
すまん、間違えた
「割り切れたら」は
if(($xx % 2) == 0){ ... }
だったわ。
598数十でもいいよ:02/05/10 16:37 ID:mOuIPJt0
>>591
ありがとうございます。こちらはとてもよく構成されていると思いますが、どうも全体が見渡せません。
1ページ程度内にすべてのカテゴリーが一覧として載っていて全体がわかりやすいカテゴリーのリストを探しています。
599nobodyさん:02/05/10 16:57 ID:???
>598
少しは努力しろよ
600nobodyさん:02/05/10 17:10 ID:ZA7s2wmA
先生!漏れはバカなので本を見てもあまりよくわかりません
猿でも厨房でもわかるPerlの基礎について学べる
サイトを教えてください。(3にあるお薦めも難しいです・・・
601nobodyさん:02/05/10 17:40 ID:???
(´-`).。oO(>>600 3にあるお薦めも駄目なら、逝ってヨシ…)

「プログラミング」という行為、学習で perl が初めてなら、
先ず、javascript 辺りから始める事をお薦めします。
perl はある程度他の言語の「プログラミング」経験が
ある人じゃないと、いきなり学習するのは辛いかと…
602nobodyさん:02/05/10 18:39 ID:???
C++とPerlとJavaScriptをまとめて開きながら交互に作業してます。
ついつい文法がごっちゃになってエラー出してしまうオイラは逝ってよしですか?
603nobodyさん:02/05/10 18:58 ID:Pgg0tTKK
     ____ 
     ◎;;;; ・∀・;;;) チクーワ
      ̄ ̄ ̄ ̄
604nobodyさん:02/05/10 21:05 ID:DbBvL4ha
サンプルなどから作ったCGIなんですけど、
テストで10回に3回ほどサーバーが強制終了されてしまいます。
何がいけないのか教えてください。

ソースは
http://members.home.ne.jp/y-koike/bbs.txt
http://members.home.ne.jp/y-koike/show.txt
です。お願いします。
605nobodyさん:02/05/10 21:22 ID:???
>>604
環境が全くわからずに答えろってか。
606604:02/05/10 21:39 ID:DbBvL4ha
…すみません。慌てて書き忘れました。
Win2000でhttpdVer.1.39f、PerlはActivePerlです。
607nobodyさん:02/05/10 21:53 ID:/cNgrcGu
◎;;;; ・∀・;;;) チクーワ (・∀・)イイ!
608nobodyさん:02/05/10 22:39 ID:???
>>604
ざっと見たが、とりあえずまともに動くコードには見えない。
だがサーバーが落ちるような原因は見当たらないな。
常に落ちるってのならともかく3/10じゃお手上げだ。

ついでに余計なおせっかいだが、
そのサンプルは相当な糞コードだな。
まともな本で勉強したほうがいいぞ。
609604:02/05/10 23:06 ID:DbBvL4ha
どうもありがとうございます。
やっぱサンプルから横着しないで一から自作だな…
610nobodyさん:02/05/11 02:07 ID:qFv6V9OI
Perlだけで実現できる、SQL型データベースのモジュールって
無いですか?
611nobodyさん:02/05/11 05:07 ID:???
use Psql;
612nobodyさん:02/05/11 08:42 ID:gbNCX/hH
#!/usr/bin/perl

$hoge = "head:abc.abc.abc.def";

print "Before: $hoge\n";
$hoge =~ s/(head:)(abc\.)(.?)/$1$3/g;
print "After : $hoge\n";

このコードで、期待する結果として $hoge には head:def が
最終的に入るようにしたいのですが、やはり s/ の部分を
while で括るしかないのでしょうか?

$hoge =~ s/(head:)(abc\.)(.?)/$1$3/g;

$3 のところの特殊変数で「マッチしなかった文字列」なんて
あるわけないですよね…特定できないし…
613nobodyさん:02/05/11 09:56 ID:???
>>612
どのフィールドが固定なのか条件をはっきりしやがれ。
614nobodyさん:02/05/11 11:21 ID:???
>>612
まずは perlretut でも読め。繰り返し指定と ? の効果を調べろ。めちゃくちゃだ。
615nobodyさん:02/05/11 12:09 ID:???
>>612
その場合なら普通に
$hoge =~ s/(head:).*(def)/$1$3/;
これでいいんじゃないの。
616nobodyさん:02/05/11 13:37 ID:7MEyepY2
KENTさんの「自宅サーバー化計画」を見たのですが
CGIの動作を確認するならやはりこのように
オフラインでテストできるようにした方がいいのでしょうか?
617nobodyさん:02/05/11 13:51 ID:???
>>616
俺はローカルテスト一切しないな。経験的にほぼ動作見切れるから。
618nobodyさん:02/05/11 14:08 ID:???
>>616
当然。自分のサーバならともかく、人様のサーバでテストする奴は迷惑馬鹿。
619nobodyさん:02/05/11 14:29 ID:???
んじゃ>>617は迷惑馬鹿ってことで。
620nobodyさん:02/05/11 15:07 ID:???
>>616
バグの収束性は確実に早い。
621 :02/05/11 15:55 ID:???
>>616
俺もやるな。
あぷする手間も省けるし。
622nobodyさん:02/05/11 17:28 ID:???
経験的にほぼ動作見切れてる>>617が妄言を吐いているスレはここレスか?(藁
623612:02/05/11 17:45 ID:???
すんません。>>613 >>614 の言っている事が初心の俺には解りません

文字列の "head:" と "abc." は固定です。"head:" は必ず、行頭に
1回しか出てきませんが、"abc." は色んなところで複数回出てきます。
"def" は固定ではないので >>615 の場合だと、"def" 以外の時は
機能しなくなってしまいます
624nobodyさん:02/05/11 18:03 ID:???
>>623
勉強する気は無いんかと。()でグルーピングして * とか + とか {m,n} とか知らんのかと。
$hoge =~ s/(?:abc\.)+//;
625nobodyさん:02/05/11 18:54 ID:???
>>619
動作見切れて何故迷惑馬鹿?
626nobodyさん:02/05/11 18:59 ID:???
>>622
小さいなあ。
君のような弱小レベルでは妄言に見えるけどそういうレベルの
人間も世の中には確実にいるのだよ(藁
627nobodyさん:02/05/11 19:19 ID:???
617=625=626 ( ´,_ゝ`)プッ
628しょぼいSE:02/05/11 19:32 ID:QCHMLNRj
2chらしい掲示板にマジ質問ですまん。
他人様のホームページをインラインフレームで表示するときに、表示した他人様のページのスクロールバーを消す方法ってある?
CGIでできるかと思ったけど、方法がわからん(−−;
629nobodyさん:02/05/11 19:49 ID:???
>>622 設定ファイル書いて「このプログラムも完璧に動いた、俺って天才」つーてるんだよ。
そういう世界もある事をわかってやれ。
630612:02/05/11 19:51 ID:???
>>624
> 勉強する気は無いんかと。()でグルーピングして * とか + とか {m,n} とか知らんのかと。

ありがとうございます。ほとんど昨日、今日perl始めたばっかりの房なので…
() って、$1 とかに突っ込む以外にも効果あるんですね。
?: が無くても期待する結果が同じなのが謎なのでその辺を自分で勉強します
631nobodyさん:02/05/11 20:19 ID:???
>>625
完璧に見切れます、というのならともかく「ほぼ」じゃダメだろ。
そもそも完璧じゃなさそうなのだが。まあ>>629が真実なんだろうな。
632nobodyさん:02/05/11 20:23 ID:???
>>628
それはHTMLとかCSSの仕事。
HTMLならscrolling="no"、CSSならoverflow: hidden;あたり。Web製作板へGO。
633nobodyさん:02/05/11 21:42 ID:???
>>617が馬鹿だってことは、経験的にほぼ見切れる俺。
634616:02/05/11 22:28 ID:???
とりあえずオフラインでも動くようにしてみます。ありがとでした。
635nobodyさん:02/05/12 00:32 ID:Kq9I9f0M
perlで指定した文字数でランダムな英数字の文字列を生成するには
どうすればいいのでしょうか?
おしえてください。
636nobodyさん:02/05/12 00:38 ID:???
>>635
範囲を決めてrand()とchr()で。
637nobodyさん:02/05/12 00:39 ID:???
最近教えてスレッドとか改造スレッドみたい、ここ。

6文字で。
my @word = (0..9,'a'..'z','A'..'Z');
my $rand = '';
$rand .= $word[int rand @word] for (1..6);
638nobodyさん:02/05/12 00:43 ID:???
>>636-637
できました!
どうもありがとうございます。
639nobodyさん:02/05/12 00:47 ID:???
教えて!!!!!
640nobodyさん:02/05/12 01:15 ID:???
>>639
や!!!!!
641パルお:02/05/12 01:40 ID:eZiXZjwU
LPWモジュールでクッキーを受け取るにはどういう風に記述すればいいのでしょうか?
642nobodyさん:02/05/12 02:08 ID:???
>>637 禿同。時々>>1を引用しておいた方がいいんじゃないか?

>いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。
>
>1:自分はこう言う事がしたい。
>2:それでこんな風にやってみたが・・・
>3:それだとこんなエラーが出て上手く行かなかった。
>
>1と3が無いと誰も答えられないよ、良い回答は良い質問から。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
というわけで>>641 2:3:が無いよ、と言わせてもらって >>4に載ってるここ見た?
http://member.nifty.ne.jp/hippo2000/perltips/lwpcook.html#COOKIES
643nobodyさん:02/05/12 03:52 ID:???
chr に 2byte 以上与えた場合の戻り値の規則を知りたいのですが、
my $num = shift;
print "$num => ", unpack("C*", chr($num)), "\n";

255 => 255
256 => 196128
257 => 196129

なんでこうなるの?
644nobodyさん:02/05/12 14:08 ID:9L9P3cqp
Perlのスクリプトが動かないのです。
use Any〜でのデータベース使用の準備の後、
dbmopen〜|die〜;
tie〜|die〜;
の両方が死にます。
WindowsMeではパーミッション666のDBMデータベース使えないのでしょうか?
それともPerl5を入れれば改善されるのでしょうか?
激しく既出だとは思うのですが…
645nobodyさん:02/05/12 14:56 ID:???
>>644
がいしゅつ以前の問題だろ…。
何でも良いからマニュアルの演算子の項を見れ。
ちなみに、それだとあらゆるプラットフォームで確実に死ぬ。
646645:02/05/12 14:59 ID:???
つーかPerl4なのか。
それならそもそもuseをした時点で死ぬだろ。
647nobodyさん:02/05/12 16:08 ID:4Ko6xKbI
windows2000Pro.+apacheでCGIを組んでいるのですが、腕の未熟もあって
たまに無限ループを作ってしまうことがあります。
その時にPerl.exeを強制終了させたいのですが、タスクマネージャから落とそうとすると
アクセスが拒否されて落とす事が出来ません。
再起動すれば問題無いのですが、煩雑ですし、Perl.exeが走ったままで使いつづけるのも怖いので
解決方法があればお教え願いたいです。
648644:02/05/12 16:26 ID:???
>>645
すみません。|演算子は||の書き込みミスです。
Perlは5かもしれません。よく分かりません。
一応、がんばって自力で途中まで調べました…。
use DB_File;
はどうなんでしょう?とりあえず帰ったら試してみます。
これでだめだったらどうしよう…。
649nobodyさん:02/05/12 16:40 ID:???
>>648
ハァ…自分が何やってるのかもわからないヤシに何かを教えることは出来ません。
650664:02/05/12 16:46 ID:???
>>649
何をやっているか…標準クラスモジュールのスコープを使用可能にしているのでは?
Perlは5でした。結局、tieが通らないのが問題だと思います。
Perl附属データベースを優先的に使用するように指定できれば良いのでは…
と思ってはいるのですが…やりかたが…
651nobodyさん:02/05/12 17:28 ID:???
>650
やっぱり何やってるかわかってないじゃん。

つーか、「〜すれば良いのでは?」と思うなら勝手にそうしてください。
やり方がわからないならGoogleってください。
ここはあなたに相槌を打つスレじゃないので。


652nobodyさん:02/05/12 20:41 ID:???
携帯でgoogleか…鬱だ…
653nobodyさん:02/05/12 22:30 ID:???
駱駝本と格闘して自己解決しました。GDBM_Fileとtieの組み合わせで成功。他の方法で失敗する原因は後で考えますです。
654nobodyさん:02/05/12 23:20 ID:???
>>643
unpackは1Byteずつ処理。
どうもリストコンテキストで評価されてそんな数字になっているみたいだね。
chrはUTF-8の文字列を返しているみたいだけど… 詳しい方、解説キボン。

my $num = 256;
print "$num => ", join ', ', unpack("C*", chr $num), "\n";
print "$num => ", ord chr $num, "\n"; # chrの反対はord
655nobodyさん:02/05/13 07:46 ID:???
どうでもいい事だとは思うけど、コーディングしてて山の様にあっちこっちに
動的変数作ってしまって、プログラム終了まで使われなくなった変数って
やっぱシステムリソース喰ったままなんですかね?

「もう、この変数は使わない〜」と思ったら、undef した方がいいの?
それとも、コンパイラが適当に判断してくれたりするんだろうか?

$a = "(・v・)";
$b = 12345;

{
# ここで $a と $b 使う。これ以降は使用されない
}

{
# 新たに変数 $c を割り当てる。しかし、$a $b が使われていないので
# $a $b 用の領域を使って確保される?(暗黙の undef とか?…)
$c = "( ゚д゚)";
}
656nobodyさん:02/05/13 07:58 ID:???
素人のものすごい素朴な質問なんですけども、
-wとuse strict;とuse warnings;$|=1;も入れて可能な限りエラーをなくして見たりしてるんですが
なぜか
Use of uninitialized value in concatenation (.) or string at C:\***.cgi line n.

Use of uninitialized value in string eq(またはneとか==とか!=とか。) at C:\***.cgi line n.
というエラーは消えてくれません。
動作にはまったくこれといって支障ないですけど、なんとなく気になってた疑問なのでちょっと聞いてみました。
657nobodyさん:02/05/13 10:50 ID:???
>>656
理由はメッセージに書いてあるじゃないか。変数は初期化しろ。
とわいえ、俺もこのwarningはウザイと思う場合もある。そん時はno warnings;〜;use warnings;ではさむ。
658nobodyさん:02/05/13 13:13 ID:???
>>655
myしる。そうすればブロック抜けた時に消える。

{
my $c = '( ゚д゚)';
# 〜$cを使う処理〜
}
659nobodyさん:02/05/13 16:13 ID:e7rLHiwb
比較結果の表示と保存をするのに

my $patch = system("diff file1 file2");
system ("diff file1 file2 >patch.diff");
print qq|$patch\n|;

これをまとめるのはどのようにしたらよろしいのでしょうか?

my $patch = system("diff file1 file2 >patch.diff");
print qq|$patch\n|;
では表示が 256 になってしまうので宜しくお願いします。
660nobodyさん:02/05/13 20:22 ID:???
>>659
何がしたいのか分からないのでこの答えが妥当かどうかはわかりませんが
$patch = `diff file1 file2`;
661656:02/05/13 21:29 ID:???
>>657
変数のところじゃなくて、
Use of uninitialized value in concatenation (.) or string at C:\***.cgi line n.
が出るのは
print <<"EOF";
の行なんです。これを指摘されるのは何でなんでしょう?
print <<"EOF";

EOF
内で使われる変数は全部use var qw[$a $b 〜];というふうにあらかじめ書いてるんでが。
ヒアドキュメントになにか決まりごとでもあるんでしょうか?
662nobodyさん:02/05/13 21:47 ID:???
>>661
宣言と初期化は違う。
宣言しただけだと変数の中身はundefだから、そんな感じで怒られる。
初期化(空文字列を代入するとか)をしておけばエラーは出なくなる。
663656:02/05/13 22:55 ID:???
>>662 ども。
use strict;
use var qw[$a $b 〜$z];
$a=$b=$c=〜$z="";

{
print <<"EOF";

$a
$b 〜
$z
EOF
}

とやってみましたが、やっぱりprint <<"EOF"; を指摘されます。別に問題なく動くということは
print <<"EOF";で出るUse of uninitialized value in concatenation (.) or string at C:\***.cgi line n.は
やっぱり意味の無いエラーなんでしょうか。
664nobodyさん:02/05/13 22:56 ID:S5I/8Zh9
perlでオラクルを使ってDBIのモジュールをインストして使ってます。

selectall_arryとかで値を抜き出す時に使う変数が理解不能です。
$@hogehoge とか $$_[1] って奴です
一応$_[1]とかは解りますが$@を会わせたり$$でjobid以外の使い方が今いち理解できません。
665nobodyさん:02/05/13 23:03 ID:???
>>663
んな事はない。どれかの変数の初期化を忘れているだけだ。
目を皿にして良〜く見ろ。
666nobodyさん:02/05/13 23:13 ID:???
>>660 ありがとうございました。以下で解決しました。
$patch = `diff file1 file2`;
open (FH, ">patch.diff");
print qq|$patch|;
print FH qq|$patch|;

667nobodyさん:02/05/13 23:22 ID:???
>>664
man perlref
668nobodyさん:02/05/13 23:30 ID:???
>>663
途中で変数にundefが代入されたんだろう。
試しにprint文の直前でprintに関わる全ての変数に対して defined $z or $z = ''; してみれ。
669nobodyさん:02/05/14 00:14 ID:ZpKcImQq
古くなった掲示板の投稿を次々とHTMLページにして過去ログを作成する掲示板がありますが、
1ディレクトリ内のファイル数が多くなるとアクセスが重くなったり、サーバーに問題が起きたりするのでしょうか。
サーバーはファイルにアクセスするときに1ディレクトリずつ辿っていくとするなら遅くなりそうですが。
5000ファイルとかでも大丈夫でしょうか。
670nobodyさん:02/05/14 00:21 ID:???
Perl5で掲示板CGIを作っているのですが、CGIの”重さ”ってどうやって調べればよいのでしょうか。
WinソフトならCPU使用率のグラフでも見ればいいんですが、サーバ上となると。

CGIスレで聞こうと思ったんですが、言語に依存しそうなのでこちらでよろしいですか?
671nobodyさん:02/05/14 00:26 ID:i98930LO
よく見るとsageだったスマソ
672nobodyさん:02/05/14 00:39 ID:o5LDH6aT
>>670
-d:DProf とか。

CGIなら
#!/usr/bin/perl -d:DProf
とかで。
673670:02/05/14 00:55 ID:???
あの…それってなんのオプションですか?(今調べてますが)
CGIのほうではエラーで起動できず、DOSプロンプト(WinME+Apache)のほうではなにも表示せず終了なのですが。
674670:02/05/14 01:04 ID:???
あ、なんか出てきた。
ありがとうございましたm(_ _)m

…と言っても、そんなファイルは見つからない〜のw。
675nobodyさん:02/05/14 01:21 ID:???
>>658
Perl内部ではメモリ開放されるだろうけど、OSには返されないだろ、
ってクックブックに書いて有ったきがする。つ〜わけで、システム
リソースは喰ったまま。スクリプトが終了した時点で全て回収
される。
ただmyを使用すれば、新たな変数宣言時に跡地が有効利用されて、
全体としてメモリ使用量が減る、ってことになるんですかね。
676656:02/05/14 02:11 ID:???
>>665
>>668 どうもです。
とりあえずそれをやってみます。
undefってやっぱりPOSTから分解したときに対応している値が空だとundefが入っちゃうんでしょうか?
***.cgi?a=&b=123だと$a=$FORM{'a'};は中身はundefなのか''空なのかどっちになってるのかよくわかってないです。。
677nobodyさん:02/05/14 03:03 ID:???
>>676
>POSTから分解したときに対応している値が空
その場合はundefじゃないと思うよ(空)。分からない時は
defined $FORM{'a'} ? print "定義済み〜\n" : print "未定義〜\n";
しちゃえば?

>>672
質問した者では無いんですが、良い事を教わりました。
678nobodyさん:02/05/14 09:12 ID:???
とりあえず *無意味なエラー* なんてものは存在しないってことを理解しる
679nobodyさん:02/05/14 09:34 ID:???
>>678
なんか当たり前だがハッとなる言葉だな。
680nobodyさん:02/05/14 11:32 ID:???
糞ッたれなエラーメッセージは世の中に溢れている。
abnormal termination...
681nobodyさん:02/05/14 13:14 ID:???
-d:DProf について解説してるサイトないですか?
682nobodyさん:02/05/14 14:04 ID:???
683nobodyさん:02/05/14 14:27 ID:cCd3d73e
derectory indexのかわりにSSIで
http://www.xxx.com/cgi-bin/bbs/
のように表示しようと思ったんですが、1つのスクリプトで.shtmlと.cgiを表示させようとすると.shtmlのときにContent-type: text/htmlが表示されてしまいます。
そこでヘッダーに
if($ENV{'SCRIPT_NAME'} eq 'xxx/cgi-bin/bbs/') {
print "Content-type: text/html\n\n";
}
とかいて可変型の出力をさせるとhttpdでは動いたんですが、サーバへ送るとエラーになります。
こういうことってできないんでしょうか。
684nobodyさん:02/05/14 15:42 ID:???
>>683
何をしたいんだかいまいちわからない。
もう少し詳しく書いて。
685 :02/05/14 15:57 ID:???
>>684
宣伝をしたいんじゃないの?
686nobodyさん:02/05/14 16:02 ID:???
>>685
www.xxx.comって適当に書いたのかと思って行ってみたら、エロサイトだったのでビクーリ
687nobodyさん:02/05/14 16:04 ID:???
>>686

同じく..
688nobodyさん:02/05/14 17:49 ID:ggUNICfm
すいません。
宣伝ではありません。適当に書いただけです。

同じスクリプトをbbs.cgi(元のスクリプト)とindex.shtmlの両方で呼び出したいんですが、
if($ENV{'SCRIPT_NAME'} eq 'xxx/cgi-bin/bbs/bbs.cgi') {
print "Content-type: text/html\n\n";
}
と書くとエラーになってしまうんです。
ようするにbbs.cgiを読んだときにはContent-type: text/htmlを出力して、index.shtmlを読んだときにはContent-type: text/htmlを出力しないようにしたいと思って。
689nobodyさん:02/05/14 18:40 ID:IM/zSuxh
>>688
if( $ENV{'SCRIPT_NAME'} =~ /bbs\.cgi/ ) {
print "Content-type: text/html\n\n";
}
としてみてはどうでしょう。
690688:02/05/14 22:30 ID:gZX6Mv2h
どうもありがとうございました。
うまく動きました。簡単でしたね(汗)
691nobodyさん:02/05/15 07:19 ID:???
1行だけのファイルがあったとします、
これを8バイトごとに区切って、
@sort に代入していくにはどうすればいいですか?
split 関数では区切り文字がないとダメなので…
区切り文字はなく、とにかく8バイトずつ区切りたいです。
よろしくお願いします
692nobodyさん:02/05/15 07:33 ID:???
693nobodyさん:02/05/15 07:33 ID:???
>691
readで一定量づつ読み込んでからunpackで分割
694nobodyさん:02/05/15 12:25 ID:???
$/ = 8;
@sort = <FILEHANDLE>;

これでもいけなかったけ。確かめてないけど。
# バージョンが低いとだめっぽいが
695TO:02/05/15 15:52 ID:+mZA1LnL
早速質問です。
フォームメールを使い会員宛に情報を送るCGIプログラムをテストしています。
PCやJskyでは無事メールは届きますがi-modeには届きません。
自分の携帯だけかなと思い、友人のi-modeに送ってみたが届きません。
ただしOUTLOOKなどのメーラーを使うと送ることは出来ます。
着信拒否の設定も何もしていないのに...
考えられる原因って何かありますか?
※独自ドメインをレンタルサーバーで運用しています。
696 :02/05/15 16:30 ID:???
>>695
一部のドメインからの送信が規制されているらしいという話を聞いたことある
697TO:02/05/15 16:40 ID:???
ありがとう。
共有型のレンタルサーバ使用で、
sendmailから送られるメールのMessage-Id:が
レンタルサーバ会社名なので、
もしかして他サイトが迷惑メールを送信したために
規制されてるのかな?うーん...
698nobodyさん:02/05/15 22:07 ID:DvGtt9Y8
MLDBMを使ってプログラムが書きたいんですけど、
MLDBMについて詳しく説明しているページや
使い方を教えてください。
699nobodyさん:02/05/15 22:09 ID:???
>>698
http://www.google.co.jp/
ここのフォームにMLDBMと書いてボタンを押すとお望みのページが出てきます。
700nobodyさん:02/05/15 23:16 ID:???
>>691
use IO::File;
my @ary = IO::File->new('data.txt')->getline =~ /.{0,8}/g;

{ local $" = "\n"; print "@ary" }

>>694
perl5.005 より前だと使えないけど、今となっては問題ないような。
ちなみに、整数へのリファレンスでないといけない。

my $str = 'abc8defg8hijkl';

$/ = 8;
open my ($h), '<', \$str;
print "$.: $_\n" while <$h>;

$/ = \8;
open $h, '<', \$str;
print "$.: $_\n" while <$h>;
701nobodyさん:02/05/15 23:26 ID:hRG/E5t+
foo(%abc);

sub foo {
my %hash = @_;
}

って正しい?
702nobodyさん:02/05/15 23:42 ID:???
Perlの最新版ってどこにあるの?
703nobodyさん:02/05/16 02:38 ID:I5/FxZ58
数値ソートがうまくできません。
下のコードをサーバ(version = 5.004_01)で実行すると、
uninitialized value警告が大量に出て、@aはソートされません。
でもローカル(version = 5.6.1)では警告無しでソートされるようです。
これはどうすればいいですか?

#!/bin/perl -w
# perl version = 5.004_01
use strict;
sub cmp($$);
my %h;
for (my $i = 1; $i <= 30; $i++) {
  $hash{$i} = rand;
}
my @a = sort cmp (keys(%h));
print @a;

sub cmp($$)
{
  my ($i, $j) = @_;
  return ($i <=> $j);
}
704nobodyさん:02/05/16 02:50 ID:???
>>701
正しく動くけど、できればリファレンスで渡したいところ。
705nobodyさん:02/05/16 02:51 ID:???
>>703
何と言うかメチャクチャだよ。基本から学ぼう。
706nobodyさん:02/05/16 02:56 ID:???
>>702
CPANでも逝ってくれ。
窓用のActivePerlならactivestate.comへ。

……activestate[s]にして全然違うところへ飛ぶ罠にご注意(w
707nobodyさん:02/05/16 09:05 ID:???
>>705

別にむちゃくちゃってわけじゃないだろ。
何故こんな質問が出るのか少しばかり謎ではあるが。

>>703
Perl5.6以前ではsort用比較関数は$aと$bを参照しなけりゃならんのよ。
つまり
sort { $a <=> $b } @array;
とするわけだ。
# プロトタイプの設定で@_でも参照できるようにしたのは
# おそらく別パッケージでも簡単に動かせるようにする為だろうね。

ついでに、cmpはPerlの組み込みキーワードなんで
サブルーチンの名前にするのはやめたほうが無難かもしれない。
特に問題なく動いてるようだし、構わないのかもしれないが。
708nobodyさん:02/05/16 21:25 ID:???
質問、というか添削希望です

DB_Fileを使って、
-------------------------
use DB_File;
$DB_BTREE->{'flags'} = R_DUP;
my $d = tie %db, 'DB_File', 'data.db', O_RDWR|O_CREAT, 0600, $DB_BTREE;

if(my $count = $d->get_dup($key)){
  print "key: $key ($count times)\n";
}
-------------------------

というふうに、データベースに指定したキーに対応するデータが
1つ以上存在する場合、その重複数を数えつつ処理したいのだけど、
このifの条件式に問題点はありますか?
709nobodyさん:02/05/16 21:40 ID:???
房な質問すいません

ローカル環境でCGIデバグして、動いていたものがほんちゃん用の
鯖にうpしたらエラーだった…

telnetでコマンドライン実行した所、↓のコードがダメだった

# 駄目
delete $hoge[ $i ];

# OK
delete $hoge{ $i };

単なるコーディングミスなんだけど、なんでローカルの perl では
コンパイル通っていたんでしょうか?
710709:02/05/16 21:57 ID:???
自己レス…素直に splice 使った方がいいね。出直してきます…
711げ鬱:02/05/17 01:00 ID:Yz0hLQt9
こんな素プリ区とを作ってみましたがうまく動きません。
どこがまちがっているのでしょうか。。。
ちなみにperl -CPAN -e shellで関係するモジュールはインストール済みです。
-----
#!/usr/bin/perl

use LWP::UserAgent;
use HTTP::Request;
use HTTP::Response;
require 'jcode.pl';

my $ua = new LWP::UserAgent;

my $request = new HTTP::Request('GET', $ARGV[0]);
my $response = $ua->request($request);

if($response->is_success) {
$html_response= $response->content;
}else{
print $response->error_as_HTML;
}

712げ鬱:02/05/17 01:00 ID:Yz0hLQt9
@html_response = split(/\n/,$html_response);

foreach (@html_response) {

if ($_ =~ m/name="?[^"]*"? value="?[^"]*"?/g) {
$data{'$1'} = $2;
}
if ($_ =~ m/NAME="?[^"]*"? value="?[^"]*"?/g) {
$data{'$1'} = $2;
}
if ($_ =~ m/NAME="?[^"]*"? VALUE="?[^"]*"?/g) {
$data{'$1'} = $2;
}
}

while(($key, $val) = each レta) {
push @key,$key;
push @val,$val;
}

$data1 = join(',',@key);
$data2 = join(',',@key);

&save_data;

sub save_data
{
$save_url = "./data.txt";

open(IN,">>$save_url");
flock(IN,2);
print IN "$data1\n$data2 \n";
flock(IN,8);
close(IN);
}
-----ここまで
713厨房:02/05/17 03:50 ID:bHXEkEom
ご質問です。あるホスト名のみ、アクセス拒否できるCGIってありますか?
教えて下さい。
714nobodyさん:02/05/17 04:09 ID:???
tyuubo-だけど言葉ずかいが素敵だから教えたる。
楽勝。
715厨房:02/05/17 04:17 ID:bHXEkEom
>>714さん
ご指導ご鞭撻、よろしくお願いします。
716nobodyさん:02/05/17 11:12 ID:kkxtU/zb
初歩で素朴な筆問でスマソ

「文字連結」ってどうやるの?

配列に入れて、joinするのはめんどいけど、
正規表現とかでやり方はないっすか?
717nobodyさん:02/05/17 11:42 ID:???
>>716
ハァ?何が肢体のかワカラソ。
$catedstr = join "", $str1, $str2;
とか
$catedstr = $str1 . $str2;
のことじゃないよな?
718nobodyさん:02/05/17 15:08 ID:jYg7e4+R
便乗質問です。
文字列の500文字目に"abcde"を入れるには
どういたら良いのですか?
719nobodyさん:02/05/17 15:53 ID:???
>>718
substr
720波兵:02/05/17 16:06 ID:???
>>718

ばっかもーん!それぐらい調べればすくわかることだろうが!!
今度そんな質問したらゲンコツだぞ!!
721nobodyさん:02/05/17 16:18 ID:???
つーか何の便乗なのか謎。DQN?
722nobodyさん:02/05/17 23:00 ID:???
>>714
お前の言葉づかいは素敵じゃないな。(藁
723時雨:02/05/18 22:28 ID:T/2gJeJW
あのぅ・・・掲示板のフラットボタンありますよね?あれってどうやってるんですか?
724nobodyさん:02/05/18 23:38 ID:???
>>723
掲示板のフラットボタン?こういうことですか?
<input type="submit" value="送信" style="border:solid 1px #000000">
これはスタイルシートつかってます。
Web制作板のCSSスレに載ってるサイト見て勉強してください。
725nobodyさん:02/05/18 23:41 ID:???
>>723
たぶん平べったく見えるボタンの事だよね。それならスタイルシート。
border: 1px solid silver; とか。板違いなのでWeb製作板へ。
726nobodyさん:02/05/18 23:41 ID:???
激しくカブタ(w
727nobodyさん:02/05/19 01:22 ID:AQpyLtDP
関数の戻り値を、リファレンス使わずに、ハッシュで返したいんですけど、

sub a
{
 my %hash = (a=>0,b=>1,c=>2) ;
 return %hash ;
}

my %myHash = a() ;

こんな感じなんですけど、添削してくれませんか、ねた無しで・・・
728nobodyさん:02/05/19 01:36 ID:???
>>727
それでいけるよ
729727:02/05/19 01:45 ID:AQpyLtDP
>>728
レスありがとう御座います、確認不足でした。
うまくいけてました。
730nobodyさん:02/05/19 08:13 ID:???
ここでよく見かける質問で極簡単なソース晒して「結果」を求める質問あるが、
それはCGIの一部でローカルでテストする環境無いヤシが質問しているのか?
731nobodyさん:02/05/19 12:20 ID:fEY33UPf
携帯で画面を自動で移動させるにはどうしたらいいでしょうか?
732nobodyさん:02/05/19 13:58 ID:???
>>731
君はPerlを宝島か何かのように考えているのかね。
733nobodyさん:02/05/19 15:59 ID:???
>>731
携帯では無理だよ
734nobodyさん:02/05/19 16:04 ID:Y5d1n8OF
教えて下さい。
スクリプトを見られないように文字化けさせるやりかたがあるときいたのですが、
変換させる用にマクロメディアかマイクロソフトかで何かを
ダウンロードしてこないといけないと裏技の本に書いてあったそうです。
書店に本を探しに行ったのですが見つからず。もしご存じでしたら教えて下さい。
735727:02/05/19 16:09 ID:???
>>730
自分の事?、
あるよ、Vine Linux2.?と、Slackware8、WinじゃCygwinも
自分の今回の確認ミスは、結果のハッシュ構造の確認をDumoer使っていたため、
リファレンス先のハッシュは問題無く表示されるけど、
直接ハッシュ指定すると正しく表示してくれないみたい、
常識?
736727:02/05/19 16:11 ID:???
>>734
それは、Javascriptの話じゃない?
CGIの場合は、パーミッションをきちんと設定すれば、
見られる事は無いとおもうけど
737nobodyさん:02/05/19 16:18 ID:???
=
738734:02/05/19 18:53 ID:81BFGvHe
>>736
すみません。
おっしゃるとおりJavascriptのことです。
ソースのJavascriptを文字化けさせて、読めなくする方法だとききました。
わかりますでしょうか?
739 :02/05/19 19:02 ID:2IiQOx1u
動画アップローダーのスクリプトありませんか?
情報お待ちしてます。
740nobodyさん:02/05/19 19:11 ID:???
>738
そこまでわかってんならスレ違い,というよりも板違い
741nobodyさん:02/05/19 19:24 ID:F0t0o3W7
今あるCGIを作ってるんですけど、
(WINのユーザー・FREEBSD上のcgi)
HPでデバックするため、
読み込んだファイルを
¥r¥nを¥¥rに書き換えて処理して、
¥¥rを¥r¥nに直して
改めてファイルに書き込んでいます。

1回目はちゃんと処理するのですが、
2回目以降、¥r¥nを¥¥rに書き換えて処理の部分が実行されていないようです。

書き換えられたファイルも一見何も変わってないようなものはないので
八方ふさがりになっています。

ファイルを書き込むときに
BSD上で¥r¥nが何かに変更されているとかしか考えられません。
そのようなことは起こりうるのでしょうか?

742741:02/05/19 19:39 ID:F0t0o3W7
今バイナリで調べてみたのですが、
0D0Aが、0A0Aに変わってしまっていました。
でも、
s/\\r/\r\n/ig;

してるんですよね。
何でだろう。
743734,738:02/05/19 20:47 ID:gBCciPdK
>>740
あああ、すみませんでした!
今気付きました!
ここは[Perl]の初心者コーナーだったのですね。
「初心者」という部分しか目に入ってませんでした。
申し訳ありませんでした。
744nobodyさん:02/05/19 20:48 ID:???
>>741
俺がこれまで見た中で十指に入るひどい日本語だ… 意味不明。
745nobodyさん:02/05/19 21:01 ID:???
¥¥rって
バックスラッシュと小文字の r ってこと?
なんでそんなことするのか理解に苦しみます。
746nobodyさん:02/05/19 23:48 ID:688ScNbc
>>745
おそらく>>741の使ってるファイルには"\\r"がたくさん入ってるんだろう。
747nobodyさん:02/05/19 23:50 ID:CPJQ1VYR
質問させてください、次のようにソートされた配列を
@list=(102,105,111,205,245,250,297,312,322,456,473,479,482,499);

こんなかたちに分解したいんですけど
@list1=(102,105,111);#----------頭が1
@list2=(205,245,250,297);#------頭が2
@list3=(312,322);#--------------頭が3
@list4=(456,473,479,482,499);#--頭が4

出来るだけシンプルにやりたいなぁと思ったわけです。
で初心者の僕ががんばって考えたのは
$i=1
foreach(@list){
 while($_ !~ /^$i/){#--$iの値を配列要素の先頭の数字とマッチするまで増やす
  $i++;
 }
 push(eval("\@list"."$i"),$_);#---新しい配列「@list+$i」に配列要素を追加
}
というもので、当然というか配列と変数をくっつけるevalが
効かなかったんですよね。
なんかよい方法はないものかと。
いっぱい間違ってるかもしれませんが、簡潔な方法があればよろしくおねがいします。
748nobodyさん:02/05/20 00:09 ID:???
>>747
for (@list) {
die 'あほ' unless(/^(\d)/);
push @{"list$1"}, $_;
}
749747:02/05/20 00:49 ID:dmmb40il
>>748
大変短くして頂いてありがたいのですがエラーがでました。
スミマセン
750  :02/05/20 00:55 ID:???
>>749
まさか>>748のをそのままコピペ(以下略
751nobodyさん:02/05/20 00:58 ID:???
>>747

@list=(102,105,111,205,245,250,297,312,322,456,473,479,482,499);
foreach (@list) {
next if !/^(\d)/;
eval sprintf 'push @list%s,$_',$1;
}

print @list1,"\n";
print @list2,"\n";
print @list3,"\n";
print @list4,"\n";
<>;
752747:02/05/20 01:00 ID:dmmb40il
いや、なんか配列名に変数をくっつけるみたいな書き方のとこ
push @{"list$1"}, $_;
ココだけコピって使ったんですけどね
753nobodyさん:02/05/20 01:01 ID:???
ソケットのことでついての質問です。
#!/usr/local/bin/perl
use IO::Socket;
use IO::Select;
@servers = ('www.zdnet.co.jp','www.asahi.com',);
print "Content-type: text/html\n\n";
foreach $server (@servers){
$socket = IO::Socket::INET->new(PeerAddr => $server,
PeerPort => 80,
Proto => 'tcp',
);
print $socket "GET /index.html\r\n";
print $socket "Host: $server:80\r\n";
$socket->flush();
print <$socket>;
}
これでページを取得出来るんですが、
ページを全部読み込んでしまいます。
これを一部のみ読み込むにはどうすればいいのでしょうか?
と、、、
print <$socket>;
これを変数にあてはめて表示するにはどうすれば、、、。
754747:02/05/20 01:01 ID:???
あ、何か751さんが新しい答えくれてる、ちょっとこれ試してみます。
755747:02/05/20 01:05 ID:???
うわ、スゲエ、出来た!
でもよーわからん、、、
ノートに書き写して後でゆっくり考えてみます。
ありがとう!
756nobodyさん:02/05/20 01:11 ID:???
747たんは多次元配列知らないのでちゅか?
757nobodyさん:02/05/20 03:17 ID:???
>>1-756マイナス753番
758741:02/05/20 05:06 ID:VDOXGDf5
>>745
実際、\r・\r\n(あと\t)がどのような状態で入っているのか
cgiのコンソールで書かせて、HPに表示させるためです。
ただ長いスペースが空いているのではわからないので、
表示できる形に直しているのです。

>>746
そのとおり。XMLソースを加工しています。

問題をはっきりするため、読みこんだ$ファイルを
$a=~s/\r\n/\\r/ig;
$a=~s/\t/\\t/ig;
##デバック
$a=~s/\\r/\r\n/ig;
$a=~s/\\t/\t/ig;
して書きこんでいるだけなのですが、
書きこみ前と後のXMLファイルをVCでバイナリで開いてみると、
どうやら0D0Aが0Aに変わってしまっているようなのです。

何が問題なのでしょうか?
759関係ないけど:02/05/20 05:30 ID:???
cgiのコンソールってなんでちゅか?
s///になんでiを付けてるのでちゅか?
デバッ ク ってなんでちゅか?
<pre>じゃだめでちゅか?
表示させるために置換したものを、なんで再びファイルに書くのれちゅか?
760あとね:02/05/20 05:36 ID:???
バックスラッシュはエスケープさせないのれちゅか?
761nobodyさん:02/05/20 08:46 ID:???
>>758(>>741)
呆れるほど突っ込みどころ満載なんだがとりあえず一つ。
binmode(FILEHANDLE)使って見れ。
762とんちんかん:02/05/20 14:27 ID:827vrQS8
Perl を使ってあるWin2kのログ ファイルから必要な情報を別のテキスト ファイルに抽出
してるんですが、ちょっとした理由でこのログ ファイルが Unicode 形式になってしまいまいた。
でこのスクリプトで読み込んでみたら案の定白紙のテキスト ファイルを作ってくれました。
Perl で UCS2 のファイルの読み書きってできるんでしょうか?
Jcode.pmとかって使うんですか?
教えて君ですみません。
763nobodyさん:02/05/20 16:08 ID:???
>762
yes.
764nobodyさん:02/05/20 20:31 ID:???
すみません。勉強したての超初心者ですが、下の場合どのように書けばいいのでしょうか。
例えば
a==bで尚且つcの場合"あいうえお"を返す。a==bで尚且つcで無い場合"アイウエオ"を返す。
a==bでなかったら"123"を返す。それ以外は"---"を返す。

それで

if(a==b){if(c){z="あいうえお"}else if{(c){z="アイウエオ"}
}
else if{(a!=b){z="123"}
}
}
else{z="---"}

だと、当たり前のようにエラーになります。教えて君ですみませんが皆さんの力を貸して下さい。
765 :02/05/20 21:05 ID:???
s/[a-z]+//;

とか正規表現にマッチした部分が格納される変数の名前ってなんでしたっけ?
766nobodyさん:02/05/20 21:08 ID:???
>>764
もし $A eq $B かつ $A eq $C のとき $Z="あいうえお";
そうじゃなくて $A eq $B かつ $A ne $C のとき $Z="アイウエオ";
そうじゃなくて $A ne $B のとき $Z="123";
それ以外のとき $Z="---";

if && elsif else
767nobodyさん:02/05/20 21:32 ID:???
>>765
とうとうこんな質問まで出るようになったか・・・。
検索もできないクズはプログラミングなどやるな。
768nobodyさん:02/05/20 21:34 ID:???
>>764-765
おい、流石にLV低すぎだろ。ネタだとしても酷すぎる。
769nobodyさん:02/05/20 21:38 ID:yMovYRK1
Image::Magick を使って画像の切り出しをやろうと思います。

$img = Image::Magick->new;
$img->Read( $file );
$img->Crop( $w, $h, $x, $y );
$img->Write( $file2 );

とやることで一ヶ所の切りだしはできるのですが、
格納している画像をカットしてしまうので、部分コピーするか、
元画像をコピーしようと思います。

ループの中に
$img2= $img->Clone;

を入れて、 $img2 に対して処理を行うことにしましたが、
Cropが有効にならなかったり、前回と同じ位置が吐き出されたりと
うまくいきません。

指定範囲を別の変数にコピーして、そこから書き出すということを
やりたいのですが、どのようにしたらいいでしょうか?
770769:02/05/20 22:08 ID:???
>>769
原因わかりました…。
単に座標の指定を間違えているだけでした…。
771長瀬 愛:02/05/20 22:16 ID:95UXUtUe
>>764
カッコの数があわないのではないか。
それはともかく、この判定条件ではz="---"の文には
至らない気がするがまあいいや。

if(a==b){
if(c){
z="あいうえお";
}else if(c){
z="アイウエオ";
}
}else if(a!=b){
z="123";
}else{
z="---";
}


>>768
グレシャムの法則というのがあってね以下略
772nobodyさん:02/05/20 22:17 ID:???
elsif
773771 長瀬 愛:02/05/20 22:30 ID:95UXUtUe
perlスレだった。
くどいけど旅の恥はかきすて。

if($a==$b){
if($c){
$z="あいうえお";
}elsif($c){
$z="アイウエオ";
}
}else{
$z="123";
}
774 :02/05/21 00:24 ID:???
>>767
初心者は何がわからないかもわからなくて、検索もできません。
答える気がねーなら、煽ってんじゃねーヴォケが
ここは”一応”初心者スレなんだから。


オレモナー。
775nobodyさん:02/05/21 02:20 ID:iePDZE0b
すいません、Perlの質問ではなく申し訳ないのですが、CGIの呼び出し方で一つ質問があります。
SSI/.htaccessが使用できないサーバ上にPerlで作成した単純なテキストを返すCGIをアップロードしました。
IEのアドレスエディットボックスに直接CGIのアドレスを入力すると正常動作しています。
これをindex.htmlがロードされると同時に読み込みたいのですが
CGIの参考書に載っている<!--exec cmd="hoge.cgi"-->や<img src="hoge.cgi">の呼び出し方が出来ません。
この他にindex.htmlと同時にhoge.cgiを読み込む方法がありますでしょうか?
776nobodyさん:02/05/21 02:53 ID:???
>>775
JavaScriptで飛ばすとか。
777nobodyさん:02/05/21 02:58 ID:OppOtViG
>>775
「SSI/.htaccessが使用できないサーバ」ですから
<!--exec cmd="hoge.cgi"-->
は使えません。

「単純なテキストを返すCGI」ですから
<img src="hoge.cgi">
はイメージデータが返さなければ意味がないです。

<script src="hoge.cgi"></script> で呼び出して、
ソースを下記のように javascript に書き換えましょう。

$text = "出力する文字列";
print "Content-type: text/plain\n\n";
print "document.write('$text')\;\n";
exit;
778775:02/05/21 03:11 ID:iePDZE0b
776さん、777さん
ご丁寧なレスありがとうございました。
早速試してみます。m(__)m
779nobodyさん:02/05/21 03:36 ID:???
(´-`).。oO(>>775 JavaScript 常時 OFF な人には見えないね…)
780nobodyさん:02/05/21 03:53 ID:1dGqnG5G
質問なんですが、携帯からなので、ログ参照、検索は勘弁願います。

学内BBS作ってるんですが、全員同じプロクシなので、
ほかに手っとり早く個人識別する方法はありますでしょうか。
781nobodyさん:02/05/21 04:01 ID:???
>>780
(1)全員に固有のIDとパスワードを配布する。
(2)書き込みは係りの人に紙に書いて手渡しにする。
(3)自分だけ書き込み出来るようにすれば、おそらく書き込んだのは君だ。
(4)名前を書かせ、それを信じる。
782775:02/05/21 04:04 ID:iePDZE0b
>779さん
試して見ましたが、どうやらそのようですね。
ASAHIネットがCGIのβサービスを開始したからCGIの勉強を始めようとしたのですが・・・
うーん、他の人達は一体どのように対応しているのかなぁ???
もう少し調べて見ます。
ご指摘ありがとうございました。
783nobodyさん:02/05/21 04:09 ID:???
>>782
イメージデータにして<img src="hoge.cgi">すれば?
784nobodyさん:02/05/21 04:11 ID:1dGqnG5G
>>781
うーん、2chのIDみたいなのとかつけたら
面白がると思うんだよね。

5) 300カ国の人間が300人自分の言語で書く。
785nobodyさん:02/05/21 04:57 ID:???
(´-`).。oO(>>784 全員同じ串なら、リモホも同じだよね?よって、IDも同じになると思うが?…)

あ、非匿名串とかは別ね
786nobodyさん:02/05/21 06:14 ID:???
普通のPerlとアクティブパールの違いだってなんですか、
今度IISでPerl使うんですけど、選択に迷ってまして、
どんなもんでしょ?
787nobodyさん:02/05/21 06:22 ID:???
(´-`).。oO(>>786 名前が違う…)

ドキュメントぐらい読めよ。ヴァカwin房
788786:02/05/21 06:34 ID:???
>>787
しゃべんなって。
789nobodyさん:02/05/21 09:32 ID:???
>>788
最近この手のアフォよく見るな。たいした質問内容でもないくせにやたら偉そうだな

↓はい、次の方どうぞ
790nobodyさん:02/05/21 10:59 ID:???
Perl → 言語名
ActivePerl → 処理系名

ですよ。
791nobodyさん:02/05/21 11:05 ID:???
>>787 >>789
煽りなら他でやっていただけますか?
邪魔です。
792nobodyさん:02/05/21 11:52 ID:???
>>791おまえも邪魔だ。いちいちレスするなって。
793nobodyさん:02/05/21 12:47 ID:???
>>785
だからIP.リモホ以外で個人を識別する方法を…
794nobodyさん:02/05/21 13:04 ID:???
掲示板などでhttp://〜から始まるURLに自動でリンクしたいのですが、
どうしてもうまくいかない箇所があるのでどなたか教えてください。

書き込まれる本文を「$message」としたとき、
$message =~ s/(http:\/\/[ほげほげ]+)/<a href=\"$1\">$1<\/a>/ig;
こんな感じになると思うんです。

そこで、
$message =~ s/(http:\/\/[\w\.\,\/\~\-\+\=\#\%\&\?\(\)]+)/<a href="$1" target="_blank">$1<\/a>/ig;
こういう記述でやってみました。

ところが、どうしても以下のような「,」が続くURLや、
ttp://k-tai.impress.co.jp//cda/article/news_toppage/0,,9441,00.html
以下のような「&」が入るときに、URLのリンクがそこで途切れてしまうのです。
ttp://news.lycos.co.jp/company/story.html?q=20bloombergki1580637&cat=10

試行錯誤してみたのですが、詰まってしまいました。
どなたか教えて頂けませんか?
795nobodyさん:02/05/21 13:50 ID:???
796794:02/05/21 14:21 ID:???
>>795
参考にさせて頂きます。
実は結構難しいんですね…。
797とんちんかん:02/05/21 14:30 ID:+ltjKcZF
すいません。
Jcode,pMの実装例がみたいのですが、サンプルどこかにないでしょうか。
けっこうしつこく検索してるんですが。。。

UCS2をよみこむスクリプトつくりたいのdせうが。
798nobodyさん:02/05/21 14:34 ID:???
エディタスレに載ってたんだけど
DzSoft Perl Editorは良さそうだね。
(ただし、フリー版は行数制限あり)

http://www.dzsoft.com/dzperl.htm
799nobodyさん:02/05/21 16:11 ID:???
サーバの起動状況を見ようと思っています。

最初はSocketを使って、レスポンスが帰ってきたらUpというようにしていましたが、
性質上どうも動作が重いので、代わりにpingで見ようとしましたが、全然資料が無くてよくわかりません。

どなたかご教授願います。
800800?:02/05/21 16:21 ID:???
Socketでファイル取得して、保存しようと思うのですが画像ファイルなどがうまく保存できないんです。
普通のテキストファイルはちゃんとできるのですが。
有用なリンクなどがあれば教えていただきたいです。
801nobodyさん:02/05/21 16:44 ID:???
binmodeってオチですか?
802nobodyさん:02/05/21 16:50 ID:???
>>801
binmodeは多分やってるはずですが・・・。
以下ソースです。
$addr = (gethostbyname("www.2ch.net"))[4];
$name = pack("S n a4 x8", 2, 80, $addr);
socket(S, 2, 1, 0);
connect(S, $name);
binmode(S);
select(S); $| = 1; select(stdout);
print S "GET /back.jpg HTTP/1.0\n\n";
open(A,">>back.jpg");
while (<S>) {print A;}
close(A);
close(S);
803nobodyさん:02/05/21 17:13 ID:???
binmode(A)だし、<S>に何がかえってくるかコンソールで確認した?
ダメすぎです。
804nobodyさん:02/05/21 17:37 ID:Eo1hAg2d
$target =~m/ー/;

"ー"は日本語のハイホン

これが走らないのですが、ーはできないのですか?
805nobodyさん:02/05/21 17:41 ID:???
このスレは
【Perl】FAQを敢えて質問するネタ心者コーナー
に変更されますた。
806nobodyさん:02/05/21 18:08 ID:???
807nobodyさん:02/05/21 18:18 ID:???
808nobodyさん:02/05/21 20:48 ID:???
>>803
んーいまいちよくわからんです。。
809nobodyさん:02/05/21 22:04 ID:???
>808
参考サイト(http://x68000.startshop.co.jp/~68user/)
書き出すファイルのファイルハンドルもbinmodeにしてね。
それとHTTPの応答は邪魔だから捨てると。
IO::SocketやLWPもチェック。
================================
use Socket;

$port = getservbyname('http', 'tcp');
$iaddr = inet_aton("www.2ch.net") or die "www.2ch.netは存在しないホストです。\n";
$sock_addr = pack_sockaddr_in($port, $iaddr);

socket(SOCKET, PF_INET, SOCK_STREAM, 0) or die "ソケットを生成できません。\n";
connect(SOCKET, $sock_addr) or die "www.2ch.netのポート$portに接続できません。\n";
select(SOCKET); $|=1; select(STDOUT);
binmode(SOCKET);

print SOCKET "GET /back.jpg HTTP/1.0\r\n";
print SOCKET "\r\n";
while (<SOCKET>){
    m/^\r\n$/ and last;
}

open(FH, "> tmp.jpg");
binmode(FH);
while (<SOCKET>){
    print FH $_;
}
close(FH);

810nobodyさん:02/05/21 22:04 ID:???
>>806暇人
811nobodyさん:02/05/21 23:11 ID:???
>>810ハイホン
812nobodyさん:02/05/22 00:59 ID:???
>>811ハイプン
813nobodyさん:02/05/22 09:31 ID:???
勢ぞろいだな
814nobodyさん:02/05/22 11:42 ID:o5bpVYAL
length($value)のように
配列のサイズを求めたいのですが、length(@arry)や(-s @arry)で取れません。
サイズを求める記述を教えてください。
815nobodyさん:02/05/22 12:29 ID:TrskWj5V
>>814
foreach (@arry){$length = length;}
816nobodyさん:02/05/22 12:30 ID:???
>>814
配列をスカラーコンテキストで評価すると要素数になります。
my @array = 0..99;
my $c = @array;
print $c;

それともこういうこと?
my @array = 0..99;
my $length = 0;
map { $length += length } @array;
print $length;

どちらにしろまともな参考書を読むのをお勧めします。
817nobodyさん:02/05/22 14:29 ID:FKXAo2H1
$length=$#array_name;
818nobodyさん:02/05/22 14:31 ID:FKXAo2H1
ちなみにハッシュは、
$length=keys %hash_name;
819nobodyさん:02/05/22 14:34 ID:dip8mLbF
DBMファイルに、配列を格納したく、

use MLDBM 'GDBM_File';
tie (%db, 'MLDBM', 'data.pag', O_CREAT|O_TDWR, 0644) || die;

としましたが、
MLDBM:error Second level tie failed 'ファイルもディレクトリもありません'
と出て止まってしまいます。
スカラーを格納する時は、use GDBM_File ですぐできたのですが、
このエラーの原因が解りません ;;
Diedは上記エラーの次に出ます。MLDBMは最新です。
どなかた勘所の解る方、ヒントでも教えていただけませんか。 よろしくお願いいたします。
820nobodyさん:02/05/22 14:35 ID:LbPQIjeD
CGI上で
Content-type: text/html\n\n
書いて、HTMLを表示したものを、処理の終わりがけに消して
Location: jump_url\n\n
したいのだが、どうすればいいのれすか
821nobodyさん:02/05/22 14:51 ID:???
>>820
定期的に監視するフレーム作る。
822nobodyさん:02/05/22 15:16 ID:7BsbRs8K
>>821
言っていることがいまいちわかりません。
参考URLがあったら、教えてくれ。
823nobodyさん:02/05/22 15:19 ID:???
CGIの中にカウンターを付けたいのですが誰か作って下さい(テキストカウンター)
2重カウント防止のやつね。
824nobodyさん:02/05/22 15:44 ID:???
>>823
What are you?
825nobodyさん:02/05/22 16:12 ID:???
>>823
print "僕はカウンターすら作れない厨房です";
826nobodyさん:02/05/22 16:37 ID:JlVHE84P
(・∀・)?
827nobodyさん:02/05/22 16:50 ID:???
>>820
結果表示用のフレーム(F1)とCGIの進行状況を監視するフレーム(F2)をつくる。
F1にはCGIの出力を垂れ流す。(長時間無出力でタイムアウトしないように注意)
F2ではCGIの状況を監視する監視用CGIを実行する。
監視用CGIは処理が完了するまでrefreshでループする、完了したらWindow全体をどっかに飛ばす。
828nobodyさん:02/05/22 17:24 ID:B5h8aDro
携帯で「Location」が出来ないんですけど、何故でしょうか?
PCなら飛ぶんですが。。。
829nobodyさん:02/05/22 17:29 ID:T+IRZr/d
>828
仕様です。
830 :02/05/22 17:30 ID:???
>>828
Locationヘッダを絶対パスじゃなく相対パスで指定してるとか?
831nobodyさん:02/05/22 17:43 ID:B5h8aDro
>>830
絶対パスで指定しています。
cgiにジャンプしてるんですが、できないんでしょうか?
832nobodyさん:02/05/22 17:48 ID:???
>>831
ソース晒せ
833nobodyさん:02/05/22 18:23 ID:a/hkqU17
あのー.............カウンター..................お願いします
834nobodyさん:02/05/22 18:26 ID:???
>833
> いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。
>
>1:自分はこう言う事がしたい。
>2:それでこんな風にやってみたが・・・
>3:それだとこんなエラーが出て上手く行かなかった。
>
>1と3が無いと誰も答えられないよ、良い回答は良い質問から。
>一緒に勉強しましょう。
835nobodyさん:02/05/22 18:51 ID:???
最近はこのスレにぎやかだな。燃料が湧き出る湧き出る・・・
836nobodyさん:02/05/22 18:59 ID:dip8mLbF
くだらん質問よろしいですか。
2ch掲示板のID付与機能は、何を見てなされているのでしょうか。
環境変数でしょうか。
cookieでしょうか。
よろしくお願いします。
837nobodyさん:02/05/22 19:04 ID:???
>>836
環境変数です。
838836:02/05/22 19:08 ID:dip8mLbF
ありがとうございます!

839nobodyさん:02/05/23 00:03 ID:wU66PY4j
フォームの最大文字数の設定なんですがこれだとエラーが出ます。

if (length($data{'coment'}) > 500){print 'コメントが長すぎます。'
}else{

構文チェックではOKが出るんですが、どこが間違ってるんでしょうか?



840nobodyさん:02/05/23 00:12 ID:???
>>817
要素数なら、
$length = $#array_name + 1;
で、ないか。
841nobodyさん:02/05/23 00:54 ID:???
>>839
>これだとエラーが出ます。
エラーの内容を書けない理由でもあるんでしょうか?
>フォームの
 ↓ ヘッダ(Content-type)出力してますか?
>print 'コメントが長すぎます。'
842nobodyさん:02/05/23 01:04 ID:???
>>841
例によってコマンドラインでなくてHTTP500のエラーなんだろう・・・
843nobodyさん:02/05/23 04:41 ID:???

・ ・ ・ ヽ(´ー`)ノ ・ ・ ・
844nobodyさん:02/05/23 16:07 ID:???
htmlから<a href>のタグで指定されているURLを抜き出したく
$strtmp = htmlテキスト
の条件で

$strtmp =~ /<a*href=(\w+)>/i;
print "URL = $&\n";

のように指定しておりますが、$&が返ってきません
($1にしても同様でした)

なるべくシンプルな形で改善方法およびもっと良い方法があれば
ご教授いただけますでしょうか。

845nobodyさん:02/05/23 16:11 ID:???
>844
×a*href
○a.+?href
846844:02/05/23 17:00 ID:???
>>845
ありがとうございます。
どうしようもないとこまちがってました。
ただ、直してもやはり結果が

URL =

と何も出てきません。なぜなのでしょう??
847nobodyさん:02/05/23 17:10 ID:yzRVE+W0
 はじめまして。

 えっとperlの関数でエクセルのMAXやMINと同じ働きをするのはないの
でしょうか?

 やりたいことは、
 ある配列リストの中で、一番大きな数字と一番小さな数字を抜き出したい
んです。

 例えば
 @AA = (1, 0, 5, 13, 8, 0, 4,);
 となっていたときに、最小の0と最大の13を抜き出して、それぞれを別々の
スカラー変数に入れるようにするにはどうしたらいいのでしょうか?
(@AAの中に入る数字は、整数だけです。また@AAの中身は別の計算で出た答え
を順番にならべたものなので、可変します)

 よろしくおねがいします。
848nobodyさん:02/05/23 17:26 ID:???
>>844
perlfaq9

#!/usr/bin/perl -n00
# qxurl - [email protected]
print "$2\n" while m{
< \s*
A \s+ HREF \s* = \s* (["']) (.*?) \1
\s* >
}gsix;

>>847
# もっと効率いいのがあるかも
@AA = (1, 0, 5, 13, 8, 0, 4,);
@BB = sort { $a <=> $b } @AA;
$MIN = shift @BB;
$MAX = pop @BB;
849nobodyさん:02/05/23 17:28 ID:???
>846
\wは正規表現でなにを意味するかをよく考える。
そしてURLに使われる文字列に必ず入るはずのものを考える。
://
850うんざり:02/05/23 17:49 ID:???
(´-`).。oO(>>844 質問の前に >>3 の perl メモぐらい読めよ…)

851847です:02/05/23 18:24 ID:ETJF2qc1
>848さん

 すごい!素早い回答ありがとうございます。
 そうか、sort使えば出来ますね。関数ばかりを探していたので、気がつか
なかったです。

 ありがとうございました。
852nobodyさん:02/05/23 19:27 ID:9GY0TqYi
PerlはラリーがNSA勤務時代に「大量の文字列処理」をこなすために開発しましたが、ラリーがなぜNSAで「大量の文字列処理」などをしなければならなかったのか、誰か知りませんか?
853nobodyさん:02/05/24 01:20 ID:T4wzQrMy
多次元配列のソートで悩んでいます。
教えて下さい。

@array の中は $array[a][b][c][d]...
と言う感じになっていて、
aの部分や、bの部分など条件を変えてソートが出来るようにしたいのですが
どうゆう方法でやるのが一般的なのでしょうか?
sort関数は使えなそうなので、自分で作るしかないんでしょうか。
854nobodyさん:02/05/24 02:25 ID:???
掲示板を作ろうと思っていたのですがサーバーエラー500が出て動きません。(パーミッションや転送モード、perlのパス表記は間違っていません)
ソースは下のurlにupしておきました。ご指導お願いします。

http://www68.dns.ne.jp/~bbs2/upload3/helen/OB0008502.lzh
855nobodyさん:02/05/24 02:28 ID:???
>854
Error 500
CGI エラー - Content-Type ヘッダが正しくありません。
CGI 出力メッセージ:

Bareword found where operator expected at C:\inetpub\WWWROOT\testbbs.cgi line 33
, near "$myaction ep"
(Missing operator before ep?)
String found where operator expected at C:\inetpub\WWWROOT\testbbs.cgi line 33,
near "ep 'write'"
(Do you need to predeclare ep?)
Bareword found where operator expected at C:\inetpub\WWWROOT\testbbs.cgi line 35
, near "$mytitle ep"
(Missing operator before ep?)
String found where operator expected at C:\inetpub\WWWROOT\testbbs.cgi line 35,
near "ep ''"
(Do you need to predeclare ep?)
syntax error at C:\inetpub\WWWROOT\testbbs.cgi line 33, near "$myaction ep "
Execution of C:\inetpub\WWWROOT\testbbs.cgi aborted due to compilation errors.

ローカルでテストできる環境作れ。
http://tohoho.wakusei.ne.jp/wwwcgi6.htm
856nobodyさん:02/05/24 02:52 ID:???
>>853
質問の意味が分からない。具体的に何がしたいのか書いてくれ。
aやbの条件を変えて、とかワケワカラン。
個人的にはあまり多次元にならないようにした方がいいと思う。

二次元配列で値のソートをする場合こんな感じ?
my @array;
for my $one (0..9) {
for my $two (0..9) {
$array[$one][$two] = $one * $two;
}
}
@sorted_by_value = sort { $b <=> $a } map { @{$array[$_]} } 0..$#array;
print join "\t",@sorted_by_value;
857nobodyさん:02/05/24 03:22 ID:???
>>854
構文チェックだけ。
>$mytitle ep ''
↑ 4個所ほど  ↓ 3個所くらい(関係無いけど、なんでbmp?)
>$myurl = "<<a href=$myurl><img src="home.bmp"></a>>"
↓ FOOTの後ろにオマケが。
>FOOT
858854:02/05/24 04:31 ID:???
>>855 >>857
掲示板が表示されるようになりました
が、書き込みのところがおかしいみたいなのでまだ調整が必要なようです。
調整はひとまず寝てからにします。どうもありがとうございました。
859nobodyさん:02/05/24 05:14 ID:???
相対パスでかかれたのをhttp://〜 の形に直すにはどうすればよいのでしょうか?
860nobodyさん:02/05/24 07:34 ID:???
んっと・・・

&boo( @foo );

sub boo
{
パラメーターとして連想配列が
渡ってくるんだけど、
どうやって参照するのか解らないっ!

 foreach $k ( keys @_ ) {
  print "$k = $_{$k}\n";
 }
なんか、違う・・・気が・・・する・・・
}
861nobodyさん:02/05/24 08:04 ID:???
中身のあるディレクトリを削除する関数ってないのでしょうか?
862nobodyさん:02/05/24 09:43 ID:???
>>860
貴方は@fooを連想配列だと思っているのか、
それともデリファレンスの方法がわからないのにリファレンスを使おうとしているのか、
どっちですか。

>>861
File::Pathのrmtree

#!perl
use File::Spec;

rmtree [ '/', @other_path ], $is_verbose, $is_safe;
863nobodyさん:02/05/24 10:20 ID:???
スタイルシートを切り替えるcgiを cgiの中に組み込みたいのですがどうやったらいいでしょうか
864nobodyさん:02/05/24 10:55 ID:???
>>863
print "Content-type: text/css\n\n";
あとはご自由に
865nobodyさん:02/05/24 12:16 ID:RsaAAUuO
SSLについて質問です。
SSLサーバー内のCGIからSendmailを使ってメール送信する場合
その内容は暗号化されるのでしょうか?
具体的には、アンケートフォームを、セキュアディレクトリ内で動かして
その内容をメールで送信したいのですが・・・・
866nobodyさん:02/05/24 12:45 ID:???
>>865
それは無理。SSLは、クライアントとWebサーバ間の暗号化だけ。
PGPを使えばメール本文は暗号化できるかな!?
867nobodyさん:02/05/24 12:54 ID:RsaAAUuO
ということはネット通販とかで「当店はSSLを使ってるから安全です」
とかうたっておきながら注文内容がそのままメールで来るのって、
ぜんぜん意味が無いってこと?
868nobodyさん:02/05/24 13:03 ID:???
近くに本屋がなくて本買えません・・・。
インターネット上で勉強していたんですが、=~の意味がイマイチ分かりません。
誰か教えてください・・・。こんな初歩的な質問をしてスミマセン。
869nobodyさん:02/05/24 13:26 ID:JeawxLYi
DBMを複数使ってデータベースっぽいものを作ろうと思うのですが、
DBMってロックできないのでしょうか?
870質問:02/05/24 13:49 ID:???
。・゚・(ノД`)ノ・゚・。
ActivePerl&Apacheをインストールしってプレーンテキストで文字を表示
する事は出来たんですが、HTMLをCGIスクリプトで表示させようと思ったら
エラーが出ました。
↓↓
#! c:/perl/bin/perl

# CGIヘッダーの出力
print "Content-type: text/html\n\n";

# HTMLの出力
print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n";
print "<html>\n";
print "<head><title>Hello HTML</title></head>\n";
print "<body><p>これは、HTML文章の例です。</p></body>\n";
print "</html>";
どうしてなんでしょう?
871nobodyさん:02/05/24 13:54 ID:???
>870
> いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。
>
> 1:自分はこう言う事がしたい。
> 2:それでこんな風にやってみたが・・・
> 3:それだとこんなエラーが出て上手く行かなかった。
>
> 1と3が無いと誰も答えられないよ、良い回答は良い質問から。
> 一緒に勉強しましょう。

1と2はあるが、3がないな・・・。
Winでやってるなら、
print "Content-type: text/html\r\n\r\n";
にしてみ。
872質問:02/05/24 13:59 ID:???
出来ました クスンν(● ´ ε `。●)
>>871
ありがとうございます。
天才ですね
873nobodyさん:02/05/24 14:12 ID:kdQeUGzg
1つのソースに複数のcookieを使うとか出来ないですか?
cookie自体に名前付けるとか。
2時間弱ネットさまよってますけど、見つかんないんです…。
874nobodyさん:02/05/24 14:20 ID:???
>873
もうちょっとわかりやすく。
多分できる。
875nobodyさん:02/05/24 14:36 ID:lhjaJYwp
aspの質問はどこでしたらいいのでしょう…
876nobodyさん:02/05/24 14:38 ID:kdQeUGzg
えっと、日付と時間秒数により乱数を発生させ、
日付が今日と同じなら同じものを表示したいんですが、
その日付と時間秒数が、名前やメールを変えると、
一緒に同じ日付でも更新されてしまいます。
877nobodyさん:02/05/24 14:41 ID:???
>875
ttp://pc.2ch.net/test/read.cgi/php/984840107/
スレ一覧の検索ぐらいする!

>876
日本語で説明してくれ。
878nobodyさん:02/05/24 14:42 ID:kdQeUGzg
うぁい、すいません。
もうちょっと自分でがんばってみます(鬱
879nobodyさん:02/05/24 16:07 ID:ftO6wAMU
SSIがうまく行きません。
拡張子は.shtmlで
<!-- #include virtual="./aaa.cgi" -->
と記述しています。
cgiを直接起動させると正しく出力しています。
パーミッションもいろいろと試してみました。
どのような対処が考えられますでしょうか?

ちなみにサーバはGMOのサーバで試してます。
ローカルではうまく動いているのですが・・・。
880nobodyさん:02/05/24 16:33 ID:???
>>868
>>1
> いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。
>
> 1:自分はこう言う事がしたい。
> 2:それでこんな風にやってみたが・・・
> 3:それだとこんなエラーが出て上手く行かなかった。

遠くの本屋で本を買え。
881 :02/05/24 16:53 ID:???
>>879
virtualで読み込むSSIが直接起動で正しく出力?
Content-type: text/htmlヘッダしか吐かないはずなのに
正しく表示されるほうがおかしくないかい?
882nobodyさん:02/05/24 17:22 ID:ftO6wAMU
>>881
shtmlファイル上にCGIで出力されたテキストをのせたいので、
<table>

</table>
までを出力させてます。

ブラウザでCGIを直接起動すると
タグには<table>〜</table>までちゃんと出力されてました。
shtmlから起動すると
<!-- #include virtual="./aaa.cgi" --> これがそのまま書かれているだけです。
なにか根本的に間違ってたりするのでしょうか・・・。
883nobodyさん:02/05/24 17:43 ID:???
>>867
クレジットカード番号がメールに書かれていたら問題だけど、
商品名や自分の名前くらいなら別にいいんじゃない?
それすらイヤならそもそもメール使えないし。
884 :02/05/24 17:45 ID:???
>>882
ローカルでうまく動いてるって、ローカルサーバではなくその事?
目的のサーバでSSIのvirtualが使えるのならCGIに問題あるとしか
考えられないけど。
いずれにしてもソースを見なければ。
885nobodyさん:02/05/24 18:25 ID:???
誰か>>859にも答えてください・・・。お願いします。。。
886nobodyさん:02/05/24 18:33 ID:???
>>885
あんたの提示した情報からじゃ、無理としかいえんな。
答えて欲しければ何がしたいのか、どういう状況なのか詳細に書いてくれ。
887nobodyさん:02/05/24 18:42 ID:???
>885
環境変数を色々使えばできるとは思うが、情報不足で答えられん。
環境変数も鯖によっては取得できなかったりもするし。
888nobodyさん:02/05/24 18:45 ID:???
>885
全自動でやることを考えるよりも、
$local_path = '..';
$full_path = 'http://〜〜/cgi-bin';
$path =~ s/$local_path/$full_path/;
と手入力でやった方が簡単だぞ。
スクリプトを配布するなら別だが、それだと環境変数でのやり方は鯖によって
可不可が変わるから難しいと言っておく。
889885:02/05/24 18:57 ID:???
そうですね。自分が書いた情報だけじゃ何言ってるかさえわからないですね。。
えっと、Socket使って他サーバーにあるHTML読み込んでそこにあるタグから
アドレスを抜き取ってファイルをダウンロードしてみようとか考えて、
http://〜の形式のアドレスではできたのですが、相対パスはいろいろ考えてみたのですが
よくわからないので相談してみたんです。
890nobodyさん:02/05/24 19:06 ID:???
>889
ソケットを使うって事はその基点となるURLはわかってるわけだろ?
だとしたら、そこから「../があったらURLを削る」、「./だったら同じフォルダ」で
URL変換を入れればいいだけじゃないのか?
891nobodyさん:02/05/24 22:19 ID:???
>>889
・HTML読む
・<base>, <meta http-equiv="base">があったらそれ、無い場合はリクエストからベースURLをつくる。
・相対パスだったら連結する。.や..はhttpサーバがよきにはからってくれる。
892nobodyさん:02/05/24 22:32 ID:ftO6wAMU
>>884
ローカルサーバではうまくいってます。
借りてる鯖の説明にはSSIは使えるとかいてありますが、
普通のhtmlファイルやテキストファイルをインクルードしても全く反応しません。
本当にSSI使えるのかな・・・・。
893nobodyさん:02/05/24 23:01 ID:???
>>892
<!-- #include virtual="./aaa.cgi" --> を
<!--#include virtual="./aaa.cgi"--> にしたら動いたりしてな
894nobodyさん:02/05/25 02:03 ID:???
>>862何言ってるか解らない
895nobodyさん:02/05/25 02:04 ID:???
>>892
もう一度よく鯖の説明見て見たら?

ssi 使えても、そのssiの一部のコマンドをマスクしたりできるからね
896nobodyさん:02/05/25 03:06 ID:???
俺には>>894が何を言っていて何に対するレスなのかがわからないが…

もし配列のデリファレンスが判らないのならば、
@{$array[0][0]}のように、@{}の中にリファレンスを書けばいいだろう。

File::Pathのrmtreeがわからないなら実際にドキュメント読んでまず試せ。
897nobodyさん:02/05/25 03:32 ID:???
Storable ver2.0 をインストールしようとしたら、Test::Moreが
ネエYOとWarningが出た。CPANへ探しに行ったが見あたらん。
何ですのコレ。make test に問題が出るだけで、そのまま使え
そうな気もしますが。
898nobodyさん:02/05/25 03:41 ID:???
899nobodyさん:02/05/25 03:59 ID:???
おお、こんな夜中に速レスが付くとは。サーチすればヨカッタ
んやね。一生懸命、目で探してますた。ありがd
900nobodyさん:02/05/25 05:07 ID:???
つーか、なんでperl -eshell -MCPANつかってないんやねん。
901nobodyさん:02/05/25 07:46 ID:/kHlEeLM
本体スクリプトでuse strictしている場合、requireした
サブルーチン内からmain内でmy宣言した変数を
参照するにはどうすれば良いのでしょう。

引数で参照渡しするしかない・・・?
それとも、これってmy宣言の意味わかってない・・・?
902nobodyさん:02/05/25 09:39 ID:???
>>901
>引数で参照渡しするしかない・・・?
>それとも、これってmy宣言の意味わかってない・・・?

その通り。my 宣言されたもんはlocal変数だと思ってください
903nobodyさん:02/05/25 09:45 ID:XVu0yEmF
JAVAscriptで新しいウィンドウを開き、そこに本に付いてたCGIの
実行結果を表示させようとしています。
str1 = URL_CGI + "?" + form.namae.toString()+ ...略;
window.open(str1, ...略);

普通にフォームのactionでこのCGIを呼び出すと、
新しいウィンドウのロケーションバーには引数無しのアドレスが
表示されますが、
http://www.abc.jp/abc.cgi
上の方法で呼び出すと引数付きのダラダラと長いアドレスが
入ってしまいます。
http://www.abc.jp/abc.cgi?data:namae=山田太郎&toshi=...略

この無駄に表示される引数の部分を無くしたいのですが、
どうすれば良いでしょうか?
「JAVAscriptで新しいウィンドウを開き..」の部分は変更不可です。
どうか皆さんの知恵をお貸し下さい。
904nobodyさん:02/05/25 09:54 ID:???
>903
無理。
905nobodyさん:02/05/25 10:19 ID:???
>>903 どうしてそれがperlの質問なんだ?
906903:02/05/25 10:33 ID:XVu0yEmF
>905
PerlCGI側の操作でもなんとかならないかなと思ったんです。

一旦新しいウィンドウを開いておいてから
移動とかどうとか・・・駄目ですか?
では、アプローチを変えます。
903の挙動が何故問題になるかというと、
cookieが複数になってしまうからなんです。
これを統一しようと思ったらどうすればよいのでしょう? なにとぞ・・・
907nobodyさん:02/05/25 10:51 ID:???
>>906
perl以前の問題。
CGIで〜〜な事がしたい。perlではどうするのでしょう? なら話はわかるが。
〜〜のところをはっきりさせてから出直しな。
908nobodyさん:02/05/25 13:31 ID:???
use strictした時に、while(<HOGE>)
とかで取り出す変数をそのループの外で使う場合
はどうすれば良いですか?
909nobodyさん:02/05/25 16:20 ID:???
ループの外で変数を宣言する。
910nobodyさん:02/05/25 17:24 ID:???
HTMLのソースから特定のタグの中にあるパスを取ろうとしているのですが
foreach (@data){
if(/<a href="(.*?\.($ext))">/i){
print $1;
--処理--
}
if(/<img src="(.*?\.($ext))">/i){
print$1;
--処理--
}
}
※@dataはHTMLのソースが入っている。$extは拡張子
とやっていて拡張子をgif、jpgなどですると
<a href="hoge/hoge.html"><img src="hoge.jpg"></a>と言う形式の時に
出力が hoge/hoge.html"><img src="hoge.jpg と出力されてしまいます。
拡張子が(この場合は)htmlで試すと大丈夫なので自分でも解決方法を考えても
わからなかったのでここで質問させてもらいに来ました。
911アルバムモナ:02/05/25 17:31 ID:yOCzjbyc
アルバムモナーつくってみますた。通報汁?
http://isweb37.infoseek.co.jp/computer/man_king/
モナー写真いっぱいほしぃモナー

ところでどなたかインフォシーク鯖の詳しい環境を知っておられる方いませんでしょうか?
JSPが使えるかどうかとかしりたいです。
912nobodyさん:02/05/25 17:32 ID:???
>>910
拡張子って何?ファイル名の接尾語の事?
913910:02/05/25 18:08 ID:???
>>912
拡張子ってファイル名がhoge.jpgだったらjpgのことを指すものだと認識してますけど
どこかちがうのでしょうか・・・?
914 :02/05/25 19:20 ID:???
>>906
use LWP::Simple;
$page = http://www.abc.jp/abc.cgi?data:namae=山田太郎&toshi=...略";
$doc = get $URL;
print $doc;

とかいうのはダメなのかな?
915nobodyさん:02/05/25 21:57 ID:???
>>911
とりあえずスレ違い。DQN逝ってよし!
916お願いします :02/05/26 02:39 ID:WlbJvt44
フォームの改行文字だけを取り除くにはどうすればいいですか?
917nobodyさん:02/05/26 02:45 ID:cGfFiopg
>>916
$hoge =~ s/[\r\n]|\r|\n//g;
う〜ん、美しくない。
918nobodyさん:02/05/26 02:58 ID:???
>>916
tr/\x0D\x0A//d;

というかPerlメモ
919教えて君:02/05/26 03:10 ID:???
CGIをダウンロードしてきてアクセス権など変更したのですが
表示されません。ちなみにniftyです。niftyは少し特殊だと
聞いたのですが、どこのスレで聞けばいいでしょうか?
とりあえず上の方に初心者というのがあるこのスレで
聞いてみました。よろしくお願いします。
初心者ですんません。
920nobodyさん:02/05/26 03:28 ID:???
>919
>いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。

ここで聞いてください。
【初級】CGI総合スレッド@Web制作板
http://pc.2ch.net/test/read.cgi/hp/1016938825/l50
921916:02/05/26 03:28 ID:WlbJvt44
>>917、918
出来た!ありがとー!
922nobodyさん:02/05/26 16:46 ID:CiF8CZ1Z
ネプのオールナイトニッポン放送のHP開くと画面が止まって電源切んなきゃなんないんです。
前はそんなことなかったんですけど、どうしたら普通に開けますか?
 
924スレッドストッパー&rlo;止停:02/05/26 17:12 ID:???
925仕様書無しさん:02/05/26 20:00 ID:???
もうかけないの?
926仕様書無しさん:02/05/26 20:02 ID:???
と思ったら書けるから偽ストッパーだし…

923と924はいったいなんなんだ〜?
2chがハクされてるの?
927lo;:02/05/26 20:22 ID:???
>925-926
ちょっとしたことをするだけでできるよ
928nobodyさん:02/05/26 20:36 ID:???
古いネタに今ごろ気付いてやってる恥ずかしい奴。
930&rlo;ぞいなてきで&rle:02/05/27 00:07 ID:???
931&rlo;・・・たっまし&rle;:02/05/27 00:08 ID:???
 
932仕様書lo;無しさん:02/05/27 00:54 ID:???
のほほ
933lo;・・・たっましle;:02/05/27 00:55 ID:???
古いネタだったのか・・・
知らなかった
934nobodyさん:02/05/27 08:16 ID:???
( ´,_ゝ`)プッ
935nobodyさん:02/05/27 16:05 ID:???
iアプリってjaveで出来てんだね。
今日気がついた。
936nobodyさん:02/05/27 16:27 ID:???
jave?javaでしょ?(プ

という煽りレスの一つでもつけようとしたが、もしかしたら俺が知らないだけかもしれない、
と思って、ひとまず検索することにした。
するとどうだ、javeは存在するではないか。
http://www.jave.de/
あぶないあぶない。無知を晒す所だった。
俺もこのソフトでいっちょiアプリでも作ってみるか。
937nobodyさん:02/05/27 20:23 ID:HK5rJclO
i-mode以外のアクセスを弾こうとして書いたけどうまくいきません。
(自分のdocomoも弾かれてしまう)どこが間違ってるんでしょうか?

if ($ENV{'HTTP_USER_AGENT'} ne~ /DoCoMo/) {
print "Location: http://www.yahoo.co.jp/\n\n";
}else{
938nobodyさん:02/05/27 20:38 ID:???
チルダの位置がおかしい。
939nobodyさん:02/05/27 20:58 ID:3m1HaKVa
HTML::Templateモジュールについて質問

使用法として、プログラム側で

$template->param(
HOME => $ENV{HOME},
PATH => $ENV{PATH},
);

みたく変数を用意して、HTMLまじりのテンプレート側で

My Home Directory is <TMPL_VAR NAME=HOME><br>
My Path is set to <TMPL_VAR NAME=PATH><br>

なんて使うんだけど、プログラム側で事前に用意した変数を
テンプレート側で使用しないと、何も出力されなくなるんです。

これを防ぐ方法か、もしくは適当な回避策って無いんでしょうか?
実際に使用してる方の意見が聞いてみたいです。

ちなみに現在は、不要な変数名が「BOOL」だとしたらテンプレート側で
<TMPL_IF BOOL><TMPL_ELSE></TMPL_IF>
なんてお茶を濁しています
940nobodyさん:02/05/27 21:46 ID:???
>>939
何がしたいのか分からん。
宣言をしていない変数を参照すれば空白であってしかるべきだと思うのだが。
お茶の濁し方も意味不明。それじゃどうやっても空文字列にしかならんだろ。
941nobodyさん:02/05/27 22:17 ID:???
Carpなどの出力を文字列して取り込みたいんですけど、
(標準、エラー出力を文字列かしたいって事っす)
「うまい」方法教えてください。

「よろしく、おながいします」
942nobodyさん:02/05/27 22:34 ID:???
>「よろしく、おながいします」
悪い。ネタの相手してる暇はねぇんだわ。
943942:02/05/27 22:49 ID:vs9qORcp
>>942
教える気ねぇ〜なら、すっこんでおつぅ〜の、わかったか?
944nobodyさん:02/05/27 22:53 ID:???
>>943
そんな態度のお前が逝ってよし!
945nobodyさん:02/05/27 22:56 ID:???
質問です。

悪質な質問->DQN逝ってよし!->スキルねぇやつはすっこんでろ!

この三連コンボはジエンですか?
946nobodyさん:02/05/27 23:00 ID:???
>>945
全て941のネタです。
947nobodyさん:02/05/27 23:40 ID:???
>>939
> 何も出力されなくなるんです。
STDERR にエラー吐き出されるんで、httpdのエラーログ見なよ。

本題は、ドキュメントを良く読んで、new で die_on_bad_params => 0 しる。
で、エラー無視するハズだがなあ。俺はやったこと無いけど、
デバッグする時なんかは、簡単にコメントにしてるな。
$template->param(
HOME => $ENV{HOME},
PATH => $ENV{PATH},
#BOOL => $fuga
);
948942:02/05/28 00:12 ID:???
だからさ、教える気の無い奴つぁ〜、すっこんでおろっての、
ひきつづき、「よろしくおながいします。」
949937:02/05/28 01:10 ID:yZ0xvPBx
色々やってみたけどうまくいかないです。
どうしてもdocomoが弾かれてしまう。どこが間違ってるんでしょうか?
if ($ENV{'HTTP_USER_AGENT'} ne ~ /DoCoMo/) {
print "Location: http://www.yahoo.co.jp/\n\n";
}else{


950nobodyさん:02/05/28 01:12 ID:???
うれしいとき〜
正規表現でかわいい顔が出た時〜
951nobodyさん:02/05/28 01:30 ID:???
>>949
!~
952nobodyさん:02/05/28 01:32 ID:???
>949
まずは正規表現の書き方から覚えよう。
if ($ENV{'HTTP_USER_AGENT'} ne ~ /DoCoMo/) {
だと
if ($ENV{'HTTP_USER_AGENT'} ne ($_ =~ /DoCoMo/) ) {
になるんじゃないかな?
まず一致する事はないね。
953nobodyさん:02/05/28 01:48 ID:???
>>952
正規表現の書き方はおかしくねえだろ。おかしいのは、パターン
結合演算子の書き方。つか、キミ自身が正規表現とは何たるかを
勉強した方が良いとちゃう?
954nobodyさん:02/05/28 01:56 ID:???
>953
確かに色々間違ってた模様。
ありがとう。

ttp://a414s1.it.nanzan-u.ac.jp/textbook/text082100-2/node81.html
こんなの見つけて色々勉強になった。
漏れには結構基本的な部分が抜けてた模様。
955nobodyさん:02/05/28 02:41 ID:???
>>954
そのリンク先のパターン結合演算子の説明おかしくないか?
俺の知らない、Perl得意の省略形かと一瞬思っっちまったが。
なんで=と!の単項やねん?もっと、まともなサイトを探すのが吉。
956nobodyさん:02/05/28 03:16 ID:???
>955
鵜呑みにするところだった…
グーグル様で検索して最初にひっかかった物だからつい…
957!~ 使え!コゾウ:02/05/28 03:58 ID:???
(´-`).。oO(>>952 プッ…)

if ( $ENV{'HTTP_USER_AGENT'} !~ /DoCoMo/ ) {
 print "DoCoMo 逝ってヨシ!\n";
}
958nobodyさん:02/05/28 08:36 ID:???
先生!激しく初心者なのですが、掲示板の入力する項目に
「名前・メルアド・URL・本文」以外に年齢とか趣味とかの
項目を追加したいと思います。どうすればいいのでしょうか?

テスト用のサンプルとしてKENTさんのASKA BBSを使ってます。
http://www.kent-web.com/bbs/sample/aska.cgi
959nobodyさん:02/05/28 08:43 ID:???
>958
ttp://pc.2ch.net/test/read.cgi/php/1012839651/
スクリプト改造工房 Part4

ここに行けばいい。
960nobodyさん:02/05/28 09:05 ID:5/swSF0d
超初歩的な質問で申し訳ありません。。

READで読んできた文字列データ(50kくらい)に含まれる特定の文字列(複数個)を
検索しようとしているのですが、うまく行きません・・。
if(VALUE =~ /PATTERN/){
だと一度に1つしか検索できないし
while(VALUE =~ /PATTERN/){
だと同じ部分でmatchしつづけてします。。
961nobodyさん:02/05/28 09:17 ID:???
>960
検索した後どうしたいかにもよるが。
VALUE =~ /PATTERN/g;
962960:02/05/28 09:41 ID:???
>961
ありがとうござます。自分の持ってるperl初心者本に詳しく書いて無かった事もあり、
optionについて勉強不足でした。助かりました。
963nobodyさん:02/05/28 09:59 ID:???
余談だが、

$str ne ~ /pattern/

これは

$str ne ($_ =~ /pattern/)

じゃなくて

$str ne ~ ($_ =~ /pattern/)

だろ。誰か気付けよ。


964nobodyさん:02/05/28 17:29 ID:???
foreach文に関して質問させてください。

配列Aと配列Bがあったとします。
@A = (1,2,3,4)
@B = (a,b,c,d)
これを1-a 2-b 3-c 4-dと表記しようと思います。

foreach $X(@A){ print "$X";
foreach $Y(@B){ print "-$Y";
} }
この書き方だと、
1-a-b-c-d 2-a-b-c-d・・・と言うような結果になりますよね?
二つの配列の内容を同時に一回ずつ表記する方法はないものでしょうか?
965nobodyさん:02/05/28 17:31 ID:???
追記:結果的に1-a 2-b 3-c 4-dという形になれば問題ないと思います。
よろしくお願いします。
966nobodyさん:02/05/28 17:39 ID:???
for($i=0;$i<@A;$i++){
  print "$A[$i]-$B[$i] ";
}
これじゃダメなの?
967だめぽ:02/05/28 18:04 ID:NVFnKI0C
アクセス解析のログから、昨日のアクセス数をもとめるにはどうすればよいでしょう・・?
アクセス解析に今日と昨日のカウンタをつけたいです。

ログのフォーマット
アクセス通し番号<>日付<>IP<> ・・・

日付は 2002/05/28(火) 18:00 という書式です。

別にカウンタ用ファイルを用意すれば可能ですが、ログをひとつにまとめたいのです。
やろうとすると一日のとき前月の日付がいろいろ変わるのですごい大変でした。。
お願いします。m(_ _)m
968nobodyさん:02/05/28 18:10 ID:???
>967
前日の日付の求め方を聞きたいのかな?
それならlocaltime(time-24*3600);で出せばいいだけだけど。

でも、そんな事をするくらいなら、ログファイルの中に日付だけのデータを作った方が楽だと思う。
969だめぽ:02/05/28 18:22 ID:???
>>968
ありがとうございます。

>localtime(time-24*3600);
これでできそうな感じがするので、やてみます。m(_ _)m
970nobodyさん:02/05/28 21:56 ID:???
そろそろ次スレ立てないとやばいぞ。
971nobodyさん:02/05/28 22:53 ID:IYnV1U6d
整数かどうかを判定するにはどうすればいいでしょうか?
972nobodyさん:02/05/28 22:57 ID:???
>971
if($a == int($a)){
973(・v・):02/05/29 03:55 ID:???
>>968

>>967 は 2002/05/28(火) 18:00 ←こんな書式の日時文字列を
time とかで返される様な値に変換したいのカナ?

at-works の access log のログファイルみたいだ…
俺、これ改造して普通に time 値が返すような値を
カキコするように改造したが…
974811:02/05/29 19:35 ID:???
parlでwinのAPIって使えるんですか?
ウインドウのタイトルを取得したいんですが。
CGIじゃなくてローカルで使います。
975nobodyさん:02/05/29 21:58 ID:???
aaa<>1
bbb<>2
ccc<>3
これを
2番目の数が多い順にソートしたいんですが、
どうすればいいのでしょう?
976nobodyさん:02/05/29 23:44 ID:BqVeUZ/K
>>974
Win::API
ここにちょっとだけ使い方が載ってました。
http://member.nifty.ne.jp/hippo2000/perltips/perllha.htm

>>975
Schwartzian Transform
http://www.din.or.jp/~ohzaki/perl.htm#SortST


で、質問なんですが、
tieの使い方がいまいち判らないのですが、
「こういう時に使うと効果的」というサンプルありましたら教えてください。
977スレッドストッパー&rlo;止停:02/05/29 23:51 ID:???
>>976
適当に流しすぎ、、、。
978976:02/05/29 23:52 ID:BqVeUZ/K
補足。
今はDB_File.pmを使う時にだけtieを使ってます。
例えばFETCHメソッドはtieで関連付けた変数から値を取り出す時に自動的に呼ばれる、
というのは判るんですが、それがどういう利点を持つのかが判りません。
979976:02/05/29 23:53 ID:???
>>977
なんか足りませんでしたか?
980nobodyさん:02/05/30 01:02 ID:???
>>978
利点って・・・FETCHとかSTOREがなかったらtieをつかえへんやん

例えばだけど、Tie::Fileってモジュールは配列をtieして、
ファイルの要素を配列の要素としてアクセスできるようにしてる。

my $this_is_the_first_line = $tied_file[ 0 ];
my $this_is_the_last_line = $tied_file[ $#tied_file ];


で、ここでFETCHがどう入ってくるかというと

1) 配列要素にアクセス
2) tieされているオブジェクトにFETCH()が呼ばれる
3) ファイルのn行目を読み込んで返す

という動作を行うわけ。だからインターフェースはあくまでも配列
なのに全然配列とは違う動きをさせられる。そういう時にtieを使う。
DB_Fileも同じ。本当はハッシュじゃないんだけどハッシュをアクセス
する時に裏側でフラットファイルデータベースのレコードにアクセスしてる
わけや。
981nobodyさん:02/05/30 01:04 ID:z8tD+2yU
>>974
parlってナニ?
perlなら知ってるけど…

クソレスでスマソ(゚∀゚)!!!!
982nobodyさん:02/05/30 02:14 ID:9bTblmUw
1000間近にすみません。

globで返ってくるファイルのリストは、必ず順ソートされているものなのでしょうか?
ズブ初心者で申し訳ないす。
983976,978:02/05/30 03:27 ID:???
>>980
詳しい説明ありがとうございます。
なんとなく掴めました。
984 :02/05/30 04:15 ID:rYtvxDAS
HTTPのヘッダの

Keep-Alive: timeout=??

の??の部分はタイムアウトまでの秒数を表しているのは分かりますが、このタイム
をカウントし始めるのは何時なのでしょうか。ヘッダーを受け取った瞬間からなの
か、全てのデータを受信し終わった瞬間からなのか…ご教示お願いします。
985nobodyさん:02/05/30 04:19 ID:???
>>984
Perl とどう関係あるのか、(略
986984:02/05/30 04:32 ID:rYtvxDAS
一応、この板はWEBプログラミングということで大丈夫かなあと思いまして…。

「HTTP」でhttp://pc.2ch.net/php/subback.htmlを検索しても余り良さそうな
スレがありませんでした。そうなると、使っている人口が多くてWEBに関わってい
る人が多そうなPerlのスレ…しかも初心者コーナーでありPart12まで続いている
老舗なら…これは行ける!とそう踏んだのですが…。
987nobodyさん:02/05/30 06:09 ID:???
>>985
まぁまぁ。単発スレ立てられるよりいいのでは?
どうせ、もう落ちる訳ですし
>>984
Content-lengthを踏まえて推察するに、ヘッダ受信終了時では?
もっとも、C・S共々対応していないと話しになりませんが(w
988nobodyさん:02/05/30 06:36 ID:???
>>986

CGIだけど、なんか質問ある? part 6
http://pc.2ch.net/test/read.cgi/php/1019561283/

このスレでいいんじゃない?
989nobodyさん:02/05/30 06:57 ID:???
>>988
いや、問題はCGIではなくHTTP1.1かと
990nobodyさん:02/05/30 07:32 ID:???
991nobodyさん:02/05/30 10:46 ID:???
>>984
ドキュメント全部読んでからのはずだが、このくらい自分で実験しろよ。
ヘッダ書き出した後CGIをrefreshまで終了させなきゃ出来るだろ。
992 :02/05/30 10:57 ID:???
このスレ、また次を立てるの?
993nobodyさん:02/05/30 13:01 ID:???
CGIでj-phoneの絵文字を表示させたいのですが
print "$E$\n";
では、やっぱり表示されませんでした。
何か良い方法ありませんか?
994nobodyさん:02/05/30 13:13 ID:???
>>992
立ててみた
【Perl】初心者コーナー Part13
http://pc.2ch.net/test/read.cgi/php/1022731565/

>>993
CGIの質問はこちらへ
CGIだけど、なんか質問ある? part 6
http://pc.2ch.net/test/read.cgi/php/1019561283/
995nobodyさん:02/05/30 16:39 ID:???
>>993-994
スマソン 逝ってきます。
996278:02/05/30 17:28 ID:???
今更だけど、>>278はもうちょい効率良くできた。

$tag_regex_ = q{[^"'<>]*(?:"[^"]*"[^"'<>]*|'[^']*'[^"'<>]*)*(?:>|(?=<)|$(?!\n))};
$str = join '',
    map { /^</ ? map { /["']$/ ? $_ : lc } split /(["'])(.*?\1)/s : $_ }
        split /(<$tag_regex_)/o, $str;
997nobodyさん:02/05/30 23:38 ID:???
997
998nobodyさん:02/05/30 23:39 ID:???
放置されてるのね・・・。
999nobodyさん:02/05/30 23:41 ID:???
もほー
1000nobodyさん:02/05/30 23:42 ID:???
             / ̄ ̄ ̄ ̄ ̄
       ∧ ∧ <1000です。
       ( ゚Д゚ ) \_____
 ̄ ̄Ψ ̄ (つ_つ_____
 ̄ ̄□∇ ̄\|オツカレサマ...| \
      ̄    =========    \ 
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。