1 :
nobodyさん :
02/04/27 23:17 ID:1NNXdNsp
2 :
nobodyさん :02/04/27 23:17 ID:1NNXdNsp
3 :
nobodyさん :02/04/27 23:17 ID:1NNXdNsp
4 :
nobodyさん :02/04/27 23:17 ID:1NNXdNsp
キーボードから文字数を制限して入力するにはどうすればいいのか教えれ。《ら抜き表現》
7 :
hanamogera ◆kkkKkkko :02/04/27 23:49 ID:zKZtkfuA
>>7 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(∩・∀・)< もしもし…何がしたいのかもうちょっと具体的におながいします
□……(つ ) \___________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
textareaに書かれた文字数をcgiにわたる前にチェックしたいということかな?
で、結局前スレ975は何が聞きたかったんだ?
聞いてアロエリーナ ちょっと言いにくいんだけど 2年前Perlに挫折して、VBS、PHPやってきたんだけど 昨日 Perlのリファレンス読んだら 理解できたの ちょっとうれしいな! 聞いてくれてあーりがと アロエリーナ♪ \______ ________/ |/ ∧_∧ Ψ (∀・ ) □ (∩∩ )  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
perlは挫折する部分がありません。
>>14 型なし言語でクラスのまねごとし始めた時点で萎えました。
今後はObjectPascalで行こうかと考え中。
Perl6まで待ってくれ。
いつまで?
オープンしたファイルは、プログラムがexit;で終了するとcloseしなくても、勝手にクローズされるのでしょうか?
19 :
nobodyさん :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が一人ずつ
>>20 1でふ。
Perl6では、if/for/foreachなどの()は必要なくなりますが...。
>20 制御構造では空白を挟むのが一般的。(if, while, foreach, for ...) パーレン中の両端は普通空白を入れない。(*) よって「1」。 (*)条件式が複雑で、パーレン中の端に空白を入れた方が見やすくなる場合は そうするかもしれない。
全角の文字列の一文字おきに、何か記号を付け加えるにはどうすればよいのでしょうか? お願いします ↓ お<>願<>い<>し<>ま<>す<> こんな感じにしたいのですが。
EUCに変換して s/([\200-\377]{2})/$1<>/g;
>21 Perl6 じゃなくても if/for/foreachなどの() が必要とは限らないだろ! `kill -KILL _gunzipのPID` if $user eq '_gunzip'; >24 環境の文字コードを早く書け、ボケ!
28 :
nobodyさん :02/04/29 00:31 ID:pMsSvLdB
質問なんですが、ハッシュのすべての要素に関して 添え字と値両方を操作したいんです。 例えば配列@aのすべての要素に関して foreach $_ (@a) {print "添え字=$_";} こういう感じのことを添え字が予めわからない場合 どのようにしたらいいでしょうか。
ありがとうございます! 調べてきます。
>>26 ありがとうございます。
sjisにも対応させるには
s/([\200-\377][\000-\377]|[\000-\377])/
でいいのでしょうか。
やってみたところ無事に動いてるっぽいのですが。
ここって、初心者がくるところなんだぁ。 なんか安心した。 で、どういうことを質問すればいいの?
(´-`).。oO(
>>33 あなたが 12〜15歳の女性なら、全身写真うpしてから話そうよ…)
Part11もうdat落ちしているよ… なんなんだ一体
ひろゆきはお金儲けに必死
過去ログ読めって言えないね…。 Part9、10はまだHTML化されてないし。
38 :
nobodyさん :02/04/29 05:56 ID:Ff1dM8JC
初心者の質問なんですが、HTMLファイルに直接、JavaScriptを書いて IEで表示させると動くのに、それをCGI上でPerlで出力させたHTML文の中に 同じJavaScript(WSHでもいい)を書いて表示させると、ブラウザの ステータスバーに「実行させたけどエラーになりました」という表示が 出て、期待通りの動作が起きないのは何故なのか、ご存知の方います?
>38 出力は期待通りにされてるの?
27に反応してください。おねがいします。
>>40 21もそれくらいは分かっていると思うのだが。
>36 儲かってますが、なにか?
>>27 for()、foreach()の()を外した例もキボン。
修飾のばあいは()をはずせるが。
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)
47 :
46 :02/04/29 10:14 ID:???
間違えた。Perl6でもifの場合は()がいるな。鬱だ
48 :
46 :02/04/29 10:18 ID:???
やっぱり必要ないな。
>>46 のままでよし
朝から連続ですまんな。
ああ、PerlもC++と同じ間違った道を歩むのか・・・。
>46 _gunzip さん、わかりやすい解説ありがとうごさいました。 わざわさ _gunzip を gunzip と書いて別人になりすますあなたのやさしさ、 たしかにわたくしの胸を打ちました。 今後ともよろしくおながいします。
52 :
46 :02/04/29 10:32 ID:???
最後の部分で擁護するようなことを書いたから
>>51 みたいなアフォを呼び込んだか。
まあ、どーでもいいや。せいぜい頑張ってくらはい。
53 :
nobodyさん :02/04/29 10:37 ID:5LS+M/ng
叩かれて当然です。
>>51 だよねー。 いつもの _gunzip さんの手口ね。
この板を盛り上げようとする心意気はわかるけど、名前を変えては煽ったり
するのってもうやめたほうがいいんじゃなーい? そのほうが人が戻ってくる
ように思うのはわたしだけじゃないでしょ?
55 :
藁藁藁 :02/04/29 10:40 ID:5LS+M/ng
とりあえず、俺が居る限り消えてください。 こいつの1レスごとに、俺が50レスで荒らします。 そんなことになったら、他の人も困るでしょ?
あぼーん
57 :
45 :02/04/29 10:49 ID:???
>52 あまりにも本質をついてしまったから、動揺しちゃったね。 >54 冷静に見てる人もちゃんといるんだね。
52=54=58 と、おきまりのを書いてみるテスト。 さて、どんな言い訳が返ってくるか(藁) それとも、おれが_gunzip認定されたりして。
61 :
nobodyさん :02/04/29 10:58 ID:5LS+M/ng
aaaaaaaaaaaaaa
62 :
nobodyさん :02/04/29 10:58 ID:5LS+M/ng
とりあえず、ウザイ
63 :
>>21 :02/04/29 10:59 ID:5LS+M/ng
このスレ、もう駄目だね。誰かのせいで。
あぼーん
>>35 dat落ちを防ぐには850で次スレに移行とかしたほうがいいのかねー
>>65 だろうね。トレンド語るようなスレなら1000ゲトーしても
良いかも知んないけど、質問系スレは900逝く前に移行して
新しくスレ立つごとにうまくageてれば良いと思う。
あまり無いような状況だけど例えば A,B,C,D,E,Fって処理があってどれもお互いカブってないような状況なら サブルーチン化して&A;・・・&F;ってやるのと ただABCDEFって並べるのなら処理速度的に後者の方が良いんですかね?
>>68 うん。目に見える違いが出るかどうかはさておき。
>>68 ちなみに、本当にサブルーチンをばらして並べる人がいたら、
漏れはその人とは一緒に開発したくない。
>>70 そなの? 漏れは長くなりすぎる場合は機能の区切りがいいところで分けちゃうけど……
72 :
70 :02/04/29 13:06 ID:???
>>71 言葉足らずだったかな?
「サブルーチンをばらしてABCDEFって並べる人がいたら、 」
ずーっとひととおりあちこちまわってみたけど、どこもかいてあることが むずかしくてわっかりませーん。 ここ初心者のとこでもむずかしいのねぇ。 びっくりさぁね。 みなさんのレベルで初心者って、、、はぁ。 もう、わけがわかりません。
74 :
nobodyさん :02/04/29 13:41 ID:kMaPAu7S
>>20 ()内が単純なものなら2、複雑で読みにくくなったら4です。
スペース打つのがめんどいのと、極力横幅を縮めたいので。
gifcat ってあるじゃん? gif画像くっつけるやつ。 標準モジュールの中にそれってあるのか? だれでもいいから早めに答えろよ、 こっちはいそがしいんだからな。 いっとくが、とほほが配布してるやつはよせよ。うまくくっつかんからな。 それ以外でくっつける方法とかしってるやつがいたらもったいぶらないで教えろや。
┌──────────────────────―─┐ │ | │ | │ | │ | │ /■\ | │ (´∀`∩) | │ (つ 丿 | │ ( ヽノ | │ し(_) | │ | │ Now Onigiring. ... | │ | │ 大変見苦しい場面がありました。 . | │ そのままおにぎりでお待ちください。. | │ | │ | └───────────────────────―┘
78 :
nobodyさん :02/04/29 15:31 ID:s0WzG4fn
そのサブルーチン内しか使わないような変数も全部my宣言した方が 良いんですか?例えばクッキーの要素とか。
>>78 もちろん。(例えば、で"クッキーの要素"を出すのはよく判らないが)
なるべく変数の有効範囲を狭くしたほうがいいかなと思うけど。
80 :
78 :02/04/29 15:54 ID:???
>>79 ありがとう。疑問解決したよ。何か俺の説明が悪かったね。
クッキーの要素ってのは、よく配布CGIスクリプトとかでよく見る
($year,$month,$week,・・・)みたいな奴のスカラ変数部ってこと。
81 :
nobodyさん :02/04/29 16:11 ID:q+P1YCSQ
フォームメールCGIでメールアドレスを登録してもらうときに全角英数字で 入力する人がいるので、全角英数→半角英数に自動で変換させたいんですが どんなふうにすれば良いでしょうか?
83 :
81 :02/04/29 16:21 ID:q+P1YCSQ
ょぅι゛ょ
85 :
nobodyさん :02/04/29 19:20 ID:NmdFgil6
ba0ka
86 :
nobodyさん :02/04/29 22:00 ID:NmdFgil6
こてはんはおえ
87 :
nobodyさん :02/04/29 22:19 ID:5LS+M/ng
このスレッドにコテハンが書き込み次第、このスレを処刑します。
88 :
コテハン :02/04/29 22:20 ID:???
コテハンですが何か?
89 :
nobodyさん :02/04/29 22:22 ID:5LS+M/ng
今までに、コテハンが書き込んだログはすべて削除依頼を出してください。 これは命令です。
これあげるから、成仏してね。 @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; }
汚いコードだな。いかにも厨房らしい。
いや、分かってるって。 知恵遅れは消えたら?
騙っても、書くコードのレベルでばれる、とか書いたら本人認定ですか?
>>94 認定(w
つーか、本人は前スレ475でちゃんと書いてるしね。
このスレッド専用の名無しさんです。
くそー、オレのコテハンがぁ(泣
102 :
100 :02/04/30 00:16 ID:???
75の質問にだれも答えてないじゃないか! なにやってんだよ、役立たずが 多いスレなのか? 90のような低レベルなこと書いてる場合じゃねーだろ! こっちはいそがしいんだよ。 もうすこしだけまってやるからはやくしろよ。 役立たずどもはどっかいっちまえ。
(´-`).。oO(
>>103 はカルシウム不足かな?…)
(´-`).。oO(カルシウム不足には牛乳だよな。_gyunyuなんちって…)
"_"には何の意味が。
くそっ 先を越された
>103 引きこもりに忙しいとかあるの?
なんか妙に荒れてんなぁ。 煽ってるのはいつものように一人だとは思うが…。
強制IDにならないかな。
112 :
nobodyさん :02/04/30 19:15 ID:vVTDvLw/
perlを勉強しはじめて2日目のタコですが、 よろしくお願いします。 REMOTE_HOSTと、HTTP_USER_AGENTと、HTTP_REFERERを 取得して、それを同じディレクトリのdata_log.txt に 書き込んでいく、というCGIを作りたいのですが、 いろんなサンプルを見ながらツギハギで書いてみたのですが、 どうしてもここから先がわかりません。 CGIで外部ファイルに書き込みを行うにはどのような処理を 行えばいいのでしょうか? ご教授いただければ幸いです。
113 :
112 :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);
}
>113 >open(LOG,"+<$data_log.txt"); この$が邪魔なんじゃない?
115 :
112 :02/04/30 19:23 ID:vVTDvLw/
116 :
112 :02/04/30 19:25 ID:vVTDvLw/
うっス! open(LOG,"+<$data_log.txt"); $取って見ました! ログを表示してみたところ、 何も書き込まれていませでした!(T-T)
&wirte;呼んでないじゃないか。
>117 タイプミス。 &write;
>>116 当たり前だろ.どこかでwrite()すれ.
120 :
112 :02/04/30 19:33 ID:vVTDvLw/
>>117 なるほど!subっていうのをどこかで呼ばないとダメなんですね!
…どうやって呼ぶのでしょうかm(_ _; m?
カブターヽ( ´ー`)ノ
>>120 &write;
と、書くだけですね
それにしても2日でこれだけのソースを書くなんてすごいですね
123 :
112 :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");
124 :
112 :02/04/30 19:40 ID:vVTDvLw/
わあああああああああああ!!!!! できました!!!!!! みなさん、ありがとうございます!!
125 :
112 :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);
}
126 :
112 :02/04/30 19:45 ID:vVTDvLw/
みなさん、わかりやすいアドバイスを有難うございます。
ここから、いろいろ応用できそうで、わくわくしてます♪
>>122 いえ、自力ではないです(^-^;
いろんなCGI配布サイトさまの、サンプルをかき集めて、
切り貼りしましたです。
アドバイス…というか、ズバリ回答を、ありがとうございました。
>>126 それでも自分でやった実力はつくと思いますよ
俺もまだ初心者ですがお互い頑張りましょう。
128 :
112 :02/04/30 19:49 ID:vVTDvLw/
>>127 ありがとうございます。
私も早く回答者さんに回れるように、がんばります。
>>123 あ,write()だと組み込み関数のwriteになっちゃうのか.
&表記をしないのであれば ::write() だったね.スマンカッタ.
130 :
112 :02/04/30 20:01 ID:vVTDvLw/
>>129 いえ、とんでもないです。
そういう場合もあるんですね。
勉強になりました♪
(´-`).。oO(
>>125 <HTML><HEAD> ぐらいは書こうよ…)
ショッピングカートの作り方教えろ
(´-`).。oO(
>>131 それを言うなら<title>でしょ…<html>も<head>も省略可能だよ…)
137 :
nobodyさん :02/04/30 23:02 ID:gJDRgS/S
JavaScriptをStringfromCharCodeに変換するツールって あるんですか?
139 :
137 :02/04/30 23:11 ID:gJDRgS/S
>>138 JavaScriptの内容を 数字化して素人さんに解読されないよーにしたいんですけど
140 :
nobodyさん :02/04/30 23:12 ID:64l1RWQD
携帯からの訪問かどうかを調べるには、どのようにすればいいんでしょうか?
>>139 素人さんは解読しないから大丈夫だよ。
つーか、StringfromCharCodeって、JavaScriptの文自体を生成できるんかいな?
143 :
112 :02/04/30 23:42 ID:vVTDvLw/
>>140 携帯からのアクセスだと、i-modeなら必ずdocomoのサーバーを
介してくる要求が来る筈ですし、c-htmlなんかを要求された
場合などが、見分けるヒントになりませんでしょうか?
素人見解ですいません。
144 :
137 :02/04/30 23:59 ID:gJDRgS/S
>>141 そーかも…
>>142 出来ますよ 実際ソース見ると
eval(String.fromCharCode(数字))
て、具合でしたから
145 :
142 :02/05/01 00:02 ID:???
>>144 おー、なるへっそ。それは面白いねぇ。
そのソースがあるサイトのURLキボン。
>>137 スマートな隠蔽はスマートに解読されがち。
document.write("(゚Д゚)ゴルァ world!!"); するのに400行くらいのダミー行を用意すればいい。
詰まるところ木を隠すなら森。更に言うならば板違い。
148 :
137 :02/05/01 00:29 ID:JaMCiNKs
>>147 すいません板違いで
ありがとうございました
149 :
145 :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
(´-`).。oO(
>>149 価値のないソースを見せてもらってワラタ)
151 :
nobodyさん :02/05/01 02:05 ID:Q/hHiA0V
>>149 文字化けします
perlじゃ無理なんですね
>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>
153 :
152 :02/05/01 02:38 ID:???
あれれ、 <SCRIPT> → <SCRIPT LANGUAGE="JavaScript"> var tmp = ""; ←ゴミ
厨房質問ですいません。 use strict;って何の為にするんですか? やると処理が早くなるとか、サーバー負荷が減るとかそういう効果が あるんですかね?
155 :
nobodyさん :02/05/01 03:35 ID:IJ/Gv/S8
www.eseven.jp ウェッブに関するご相談はこちらまで ホームページ作成からCGI構築まで 国内有数のデザイン・センスとトップクラスのコンピューター・スキルを あわせもったスタッフが対応します
>>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その他";}
>>154 グローバル変数の使用に警告を出したり間違いの可能性を指摘してくれたりします。
貴方の言う効果はありません。
でも出来るだけ書くことをお勧めします。
貴方以外の人がそのスクリプトを読むときに色々と助かります。
>>157 なんでプラグマとモジュールが同列に扱われてるんですか?
すごく違和感があるのですが。
>>158 つーより、プラグマモジュールだろ。
perldoc perlmodlib
>>158 元来Perlはそういったあらゆる制約を嫌う言語だからです。
自由な記述が出来るよう配慮したのではないでしょうか。
文字列から任意の文字列を削除するにはどうしたらいいんでしょうか? たとえば あういうえあいうえいあいうえ から 'いう' だけを削除したいときとか。 ~tr/いう//d; ではすべての 「い」 と 「う」が削除されちゃいますよね。
>>161 s/いう//g;
そもそもtr/いう//d; って動くの? JPerl?
ケコーンするか…
JPerlさいこー
167 :
nobodyさん :02/05/01 12:52 ID:ISNd4ZR0
use strict を使用していますが、サブルーチン内で突然宣言したグローバル変数にエラーを出してくれません。 仕様なのでしょうか。
168 :
無知者 :02/05/01 13:00 ID:RKuTX2W0
何も知らない無知者です。これから簡単なHPを作ろうと思います。 よくプロバイダのホームページなどに「HP作成」コーナーがありますが そういうとこ行く場合でも、お店で売ってる「HP作成ソフト」は買って おかないとお話にならないんでしょうか? パソコンの種類はibookというものです。
>>168 そんなもん買ったら、目もあてられない。
まずはPerl本を買いなさい。
use strictって単純に個人でスクリプト使用する場合意味無くね?
>>170 まぁそりゃ一回書いて二度と見ない・手直ししないスクリプトや1行
スクリプトならね・・・
でも基本的には意味ある・意味ないの問題ではなく、その後問題に
ならないように癖としてつけておくべきものだと思ふ。
173 :
nobodyさん :02/05/01 14:34 ID:Y6d+iOU0
>>171 たしかPHPではグローバル変数はサブルーチン内で作成できないと思いましたが、
Perlでは間違って変数をグローバル宣言してしまっていてもわからないのですか。
>>167 なんだ、宣言って。local $global;とでもやったのかね。これって
全然グローバルじゃないって事わかってるだろうね?
175 :
あげ太郎 :02/05/01 15:28 ID:nNyYCbiy
掲示板を作ってるんですが 同じ内容の投稿を禁止するには どうすればいいかわかりますか?
176 :
あげ太郎 :02/05/01 15:30 ID:nNyYCbiy
追加:”同じ人”の同じ内容
177 :
168の無知 :02/05/01 15:32 ID:OCxUwcxh
>169 perl本とは何ですか、参考書みたいなもの? そもそもperlという言葉の意味を簡単でいいので教えれくださ
>175 発言を記録する前に、発言者&内容と、最新の記事の発言者&内容を比較。 具体的なやり方が知りたければ、二重投稿禁止機能のあるBBSを探してそのソースを見るといい。 無料配布のでもたくさんあるだろ。
>>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されていない
という条件を全て満たす変数にアクセスしようとした場合のみです.
間違ってグローバル宣言する事はまず無いと思うけど,宣言しただけではエラーは出ません.
何かにつけ、小一時間問い詰めたいと言うバカの何チャラがいる板は この辺ですか?
183 :
nobodyさん :02/05/01 18:52 ID:1jtifKOi
サブルーチンの中の変数をmy宣言すると、 参照渡しできなくなるのですか?
出来るよ。聞く前に試した方が早いと思うが・・・
186 :
nobodyさん :02/05/01 20:37 ID:Kie4dwlr
URLを貼ってもオートリンクが効かない掲示板のcgiスクリプトを使っているんですが、 自動的にリンクされるように設定したいんですが、 簡単に書きかえれるものなんでしょうか? それともおれみたいな初心者は無理でしょうか?
188 :
nobodyさん :02/05/01 21:51 ID:c2Kry9FX
>>180 親切に教えて頂きありがとうございます。
わたしのグローバル宣言とは、タイポで未宣言の変数名に
$abc="abc";
のように、存在しているかのように値を入れたことです。
エラーがでなかったので特定に困りました。
パッケージはプログラムの最初に宣言していました。
>>188 あれ? それは use strict; していればきちんと怒られると思うのですが…….
パッケージ云々について少し伝わらなかったような気がするので補足します.
これはプログラムの最初でパッケージ宣言をしているかどうかは関係ありません.
>>180 でエラーになっていたところ
print "$hage\n"; # Error!
がありましたが,この場合でも
print "$package_name::hage\n"; # OK
のように変数にパッケージ名を指定すれば怒られずに済むという事です.
この際そのパッケージが実際に存在しているかどうかは問いません.
ぱっと見で参照先が特定できない変数を見つけたらエラーを出す,
というのが use strict 'vars'; です.
あと,Typoを防ぐのであれば /perl -w するのがよろしいかと.
このスレこの板で一番まともで優良な気がするのは漏れだけ?
前の方の荒らしレスを見ても?
その荒らしが少ない。 教える方がコーマンチキじゃない(これが素晴らしい) 初心者は結構すぐに礼をしてる。 って辺りを言っているんだが、こういうこと書くと意図的に荒らす奴とかでそうだな。
>>192 教えるほうについては、たまたまそういう解答者がいただけだね。
荒らしについては、いつもの彼が連休でどっか逝ってるんでしょう。
>>192 初心者スレッドは初代からそんな感じですね。
役立つので過去ログ捨てられない。
195 :
183 :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__
>>188 サブルーチンを別ファイルに追い出して 呼出し側で use strict しているとか。
>>195 敢えて型グロブを使うなら
×
my(*str,$size,$omit)=@_;
○
local *str = shift;
my($size,$omit)=@_;
あぼーん
200 :
nobodyさん :02/05/02 04:20 ID:Opu6NMoF
二度と出てくるな!!!!!!!!
203 :
193 :02/05/02 10:34 ID:???
204 :
nobodyさん :02/05/02 16:25 ID:Opu6NMoF
>>203 お前を見てるとむかつくんだよ。死ね!!!!!!
死ね!
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
(省略されました・・全てを読むにはここを押してください)
掲示板とかのログファイルをダウンロード(閲覧)できないようにするにはどうしたら?
>205 ・.htaccessで制限 ・ログの拡張子を.cgiや.plにしてしまう サーバーによって使えたり使えなかったりするけど。 ちなみにコーディングの話じゃないからスレ違いな。
>>205 せっかく書いちゃったので。
ログ入れてるディレクトリの .htaccess で
<Files "*.log">
Order allow,deny
Deny from all
</Files>
>>207 それをしてもCGIから読み込みできますか。?
>208 出来ない方法を教えられてると思ったか? 出来るよ。
>>188 >>189 調べたところrequireしたplファイル内のサブルーチンで
宣言するとエラーにならず、メインのルーチン内で宣言するとエラーになるようです。
211 :
183 :02/05/02 16:56 ID:lVIeVo5W
>>197-198 すいません。型グロブというのはよくわかりません。
Cのようなポインタ渡しをPerlで行う方法はありませんか?
212 :
207 :02/05/02 17:00 ID:???
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|
>>209 | うるせーモカ!うるせーモカ!うるせーモカ!
∧ ∧ |/\_________
(,,゚Д゚)____.
(つ/~ ※ ※ \
/※ ※ ※ ※ \
>>205 じゃないよ
ユーザに設定を任せた配列をコピーする場合、あればそのまま、 無ければデフォルト値をセットしたいのですが、変数で よく使われるテクニック(?)が使えませんでした。 @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);
216 :
215 :02/05/02 19:01 ID:???
すいません、「簡単」というか「普通はこうするよ」ってな セオリー通りのやり方が知りたいのでした。宜しくお願いします。
>>215 @week or @week = qw(Sun Mon Tue Wed Thu Fri Sat);
変数だったら $var ||= $default; が普通かなー。
218 :
215 :02/05/02 19:27 ID:???
>>217 それ簡潔でいいですね、有難う御座いました。変数の方もスッキリしてます。
if ($in{'name'} =~ /★/) { $in{'name'}=~ s/★/☆/g; } if ($in{'name'} eq "#pass") { $in{'name'} = "管理人 ★"; } これでキャップと似たようなものになるはずなんですが、 パスを打って書き込むと「管理人 ★」になるはずですが 「管理人 ☆」になってしまいます。 どうすればいいのでしょうか?
220 :
197 :02/05/02 21:35 ID:???
>>211 型グロブがよくわらんって、あなた自分で使っているやつだよ。
local(*str,$size,$omit)=@_; って書いてる、*strの部分。
型グロブには my は使えんから、
>>195 のエラーが出るって
とこまで書かないとダメかいね。
しかし、なんでスカラ値渡すのに、リファレンスや、型グロブが
必要なのか謎。
>>219 パス付きでも何でもいいけど、
書き込んだ時にどういう順番で処理されるかをもう一度考えてみれ。
あと、if ($in{'name'} =~ /★/) { $in{'name'}=~ s/★/☆/g; }は
$in{'name'} =~ s/★/☆/g; で十分。
>>219 #passに★が含まれてるんじゃねーの?
>219 if ($in{'name'} eq "#pass") { $in{'name'} = "管理人 ★"; } else{$in{'name'} =~ s/★/☆/g;} としておけば問題は起こらないと思われ。 これでもまだ「管理人 ☆」になるなら、 1:プレビュー画面を挟んでいないか 2:この処理が2回以上行なわれるようになっていないか を確認するべき。
224 :
219 :02/05/02 22:25 ID:???
219です。
再確認してみたら
if ($in{'name'} eq "#pass") { $in{'name'} = "管理人 ★"; }
if ($in{'name'} =~ /★/) { $in{'name'}=~ s/★/☆/g; }
と書かれており、上下を入れ替えて試してみたら正常に動作しました。
つまり、ただ自分がミスしてただけでした(w
>>221-223 質問に答えてくれてどうもありがとうございました。
初心者なんですが、これでまちがいないでしょうか? if ($in{'name'}=~ /アホ/) { $in{'name'}= 'Dream ★'; } elsif ($in{'name'}=~ /無能/) { $in{'name'}= '_gunzip'; } elsif ($in{'name'}=~ /厨/) { $in{'name'}= '弐編'; }
>>225 あ、そのコードを使うなら、下に2行足さないとダメですね
elsif ($in{'name'}=~ /用(無|な)し/) { $in{'name'}= 'pear'; }
else{ $in{'name'}='その他名無し'; }
500KBほどのファイル300個に対して、ファイル検索をしたいのですが、 効率の良い方法はありませんか? ファイルの一覧は、@filesに格納してあります。 入力された、$in{'word'}が含まれるファイルをリストアップしたいのです。 よろしくおながいします。
>227 楽勝だな!
>>227 {
my $tmp;
@files = grep {
open FILE, $_ or die;
read FILE, $tmp, -s FILE;
close FILE;
$tmp =~ /\Q$in{'word'}\E/;
} @files;
}
{ my $tmp; @files = grep { open FILE, $_ or die; read FILE, $tmp, -s FILE; close FILE; $tmp =~ /\Q$in{'word'}\E/o; } @files; } すまん、/oつけ忘れた。
全くの初心者です(このスレできくべきなのかもわからない)
でも作りたいものはあります。
まず、お手数かけて恐縮ですがこのサイトを見てみてください。
http://kooks-highhat.com/jpn_index.html ここの「カラーピックアップシステム」では、何種類もの色と柄を
自由に組み合わせてオリジナルTシャツ作りのシュミレーションができる
ようになっています。
私は、こういったことをTシャツの色と柄ではなく、
「複数種のワイシャツ(写真画像)」と「複数種のネクタイ(写真画像)」を自由に組み合わせて
シュミレートできるようなシステムを作りたいと思っています。
しかしながら全くの初心者のため、どんな言語をどんなふうに使えばできるのか
さっぱりわかりません。
どなたか教えて下さいませんか?
とりあえず「すぐわかるPerl」とかで学べばよろしいのでしょうか?
>>231 PerlとGDで出来そうだけどね。
Javaとか使った方がパフォーマンスは良いかと。
>>231 それなら、CGIじゃなくてJavaScriptがイイと思う。
もしくは、Flash
234 :
nobodyさん :02/05/03 08:55 ID:6+RS1vf9
235 :
nobodyさん :02/05/03 08:56 ID:6+RS1vf9
( ´,_ゝ`) プ プ プ プ プ プ プ プ プ プ プ プ
236 :
nobodyさん :02/05/03 09:04 ID:6+RS1vf9
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ gdsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgs xs5r6rs56rs56rs56rs56rs56rs56rs56jtx,7wz434w34w34w34w34w34w34w34w34w34w34,........
237 :
nobodyさん :02/05/03 10:54 ID:6+RS1vf9
程度ひくぅ(p
238 :
nobodyさん :02/05/03 10:54 ID:6+RS1vf9
このスレの1だが、あまりに程度が低いので終了とします。
240 :
nobodyさん :02/05/03 11:05 ID:6+RS1vf9
とんでけ
241 :
nobodyさん :02/05/03 11:09 ID:6+RS1vf9
コテハンはみんな無能。 スキルの低い奴ばっかり
呼んだ?
244 :
nobodyさん :02/05/03 11:26 ID:6+RS1vf9
コテハンはみんな無能。 スキルの低い奴ばっかり
245 :
nobodyさん :02/05/03 11:48 ID:KcX/dW60
サブルーチンの引数でハッシュの参照渡しってどのようにするのですか?
246 :
nobodyさん :02/05/03 12:01 ID:6+RS1vf9
コテハンなんてなぁ、所詮はしろーとなんだよ(ワラ 要するに初心者以下のレベルってことよ(ゲラ おめーら小学校からやりなおせよ(ハゲワラ
229=230=Mr.ohzaki?
249 :
nobodyさん :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;
>>246 しろーと か否かはレベルではなく、収入を得ているかどうかです。あしからず。
251 :
245 :02/05/03 12:21 ID:KcX/dW60
sub hashtest(\%){ my (%s) = @_; my %test; %h_test = ("1", "h1", "2", "h2"); %$s = %h_test; } これでは駄目でしょうか?
252 :
245 :02/05/03 12:24 ID:KcX/dW60
訂正: my %test; -> my %h_test
>>251 my ($s) = @_;
リファレンスは常にスカラー値。
255 :
nobodyさん :02/05/03 12:36 ID:6+RS1vf9
>>254 はげ指導医
256 :
nobodyさん :02/05/03 12:37 ID:6+RS1vf9
>>254 激しく同意
257 :
nobodyさん :02/05/03 12:59 ID:6+RS1vf9
次は>>226がターゲットです。
>>254 それ、オレのコテハンだったのに・・・
もういいもん。
煽り専用の共用コテハンかと思うて使っただけなのだ。 すまど
261 :
nobodyさん :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の人生を | 終了.... | |
│ | 終了させてあげて下さい。(推奨). └───┘ |
│ | |
│ └───────────────────────┘
│特別企画 ├┤ ├┤
├┬──────┬┼┼┬────────────┬┼┤
├┴──────┴┴┴┴──┬─┬─┬─────┴┴┤
│□ エラーが発生しました | | |●インターネット |
└─────────────┴─┴─┴───────┘
263 :
nobodyさん :02/05/03 15:50 ID:7hc2ohlW
タグの中を英字を大文字→小文字にするにはどうすればいいんでしょうか? ただ、<img src="image.png">などの場合の""の中は変換したくないのですが。
>263 すっごいめんどうくさい正規表現を組む。
>>263 $str = join '', map {
/^</ and $_ = join '', map { /^"/ or $_ = lc; $_ } split /("[^"]*")/; $_
} split /(<[^>]*>)/, $str;
$strにHTML文書を入れれ。
>265 alt='この中では"が使えます' が入ってた場合は?
>>266 $str = join '', map {
/^</ and $_ = join '',
map { /["']$/ or $_ = lc; $_ } split /(["'])([^\1]*\1)/; $_
} split /(<[^>]*>)/, $str;
こんな感じかな? 適当スマソ。
268 :
nobodyさん :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にするとちゃんとブラウザに表示されます。
解決策教えてください。
どういう風に解決したいのかがわからん・・・・
>>268 いろんなブラウザで試してみた? IEだとたまにそうなる。
271 :
nobodyさん :02/05/03 18:13 ID:7wVKBbUQ
>>269 ダウンロードせずに、結果をブラウザで表示させたいんです。
>>270 Netscape6で確かめたらちゃんとできました。Opera6.01だとだめでしたが。
どうもありがとうございました。
ファイル情報を取得するにはどうすれば良いですか?
スカラ変数 = (stat(ファイルハンドル または ファイル名))[インデックス番号]; --------------------------------------------------------------------- インデックス番号 0 → ファイルシステムのデバイス番号 1 → iノード番号 2 → ファイルのモード 3 → ハードリンクの数 4 → ファイル所有者のユーザID 5 → ファイル所有者のグループID 6 → デバイスID 7 → ファイルサイズ(バイト単位) 8 → 最終アクセス時間 9 → 最終変更時間 10→ iノード変更時間 11→ ファイルシステムI/Oの最適ブロックサイズ 12→ 割り当て済みのブロックサイズ
data.datというファイルの最終アクセス時間を取得する場合は $accesstime = (stat(data.dat))[8]; という感じ
276 :
nobodyさん :02/05/03 19:29 ID:7hc2ohlW
>267 それだと Foo="Bar" の組み合わせが複数あると最初の一つしかできませんでした。 というか自分がその事書いてなかった。。逝ってきます。
>>275 Web上のファイル情報は取得できないのでしょうか?
>>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 まで小文字になって鬱。
>>278 <!DOCTYPE
って、必ず1行目だっけ?だったら、最初の1行目だけスキップすれば?
>>279 xml宣言もあるのでそうとも限らない.
まあ指摘の通り
>>278 に特殊な場合の処理を足していけばいいだけだね.
>>280 カキコしたあとで気づいた…
1行目に記述されてても、複数行に渡って書いているのもあるな…
>278-281 うまく動きました。ありがとうございました。 あと、<!DOCTYPEは削除してしまうので特に問題ないです。
283 :
nobodyさん :02/05/03 21:05 ID:vg/qOBA6
初めまして。 さっそくですが、質問です。 これはどういういみですか?第2引数がわかりません。 push(@sqcookie, "${name}_${value}");
http://と打つと自動的にリンクされるようにしたいのですが (本文の変数は$FORM{'comment'} )
$url = '([^=^\"]|^)(http\:[\w\.\~\-\/\?\&\=\@\;\#\:\%]+)';
$FORM{'comment'} =~ s/$url/<a href=\"$url\" target=\"_top\">$url<\/a>/g;
こうしても上手くリンクされますか?
285 :
284 :02/05/03 21:06 ID:???
誤字 こうしても上手くリンクされますか? ↓ こうすると上手くリンクされますか?
>>277 ファイル情報って具体的にどういう情報を知りたいんだYO
$scalar = "10"; $scalar += 10; とやらないで,いきなり $scalar += 10; とやるとスカラ変数'$scalar'にはundef値である0が代入されていますが このundef値って何て読むんですか?アンダフ値でいいの?
290 :
284 :02/05/03 21:21 ID:???
284です。 実際に試してみましたが、無理でした・・・。 どうすればURLが自動リンクされるのでしょうか?
>>289 あんでふじゃない?
定義されていないって意味
なるほど アンデファイン undefine の略か じゃあ人前で使うときはアンデファインでいいや
>284 後方参照($1とか$2とか)は知ってる?
294 :
284 :02/05/03 21:33 ID:???
>>293 すみません。
全然知りません。
KENT WEBのCGIにはあったけど・・・
undefinedだろ ボソ
_,∩_ _,∩_ _,∩_ (_____)ゝ、 (_____) y (_____) / :: :: :: ヽ 〉 /-‐:: ::‐-ヽ / / :: :: :: ヽ _./ (・ )ll(・ ) ∨ _/ 0) i! 0) ∨ _/ ( ・)i!(・ ) ゙、_ // :: :: ∈ゝ :: ::ヽ // :: ‐-‐ :: ヽ // :: ー一 :: ヽ\ . ゝ/:: :: :: :: :: ::ヽ ゝ/ :: :: :: :: :: ヽ ゝ/ :: :: :: :: :: ヽく  ̄ ̄ | ̄ ̄ | ̄ ̄  ̄ ̄ | ̄ ̄ | ̄ ̄  ̄ ̄ | ̄ ̄ | ̄ ̄ | | | | | | ⊂! !つ ⊂! !つ ⊂! !つ 教えてあげないよ!ジャン!
>>284 ()でくくった部分にマッチした文字列は$1とか$2で参照できる。
$FORM{'comment'} =~ s/$url/<a href="$2" target="_top">$2<\/a>/og;
>>277 HEADでヘッダだけ持ってくれば、
ある程度わかるよん。
300 :
nobodyさん :02/05/03 22:08 ID:CL/oAkFo
imode用の「accesskey=」をcgiにリンクさせたいんですが、どうすればいいでしょうか?
>>284 役に立たない細かい事を色々と。$urlの中の([^=^\"]|^)は余分。
あと、文字クラス[〜]の中ではほとんどの文字はエスケープしなくてもいい。
ただし"-"はマジカルインクリメント(例:[a-z])の効果があるから最初か最後に置く。
[\w\.\~\-\/\?\&\=\@\;\#\:\%]+ → [\w.~/?&=@;#:%-]+
つかここで聞くよりPerlメモを・・・・ (ボソ
>>300 意味がわかりません。
<a href="test.cgi" accesskey="1">
ということかな?
>>301 マジカルインクリメントは ++ っしょ。
304 :
nobodyさん :02/05/03 23:02 ID:apBthE5H
別スレでやったらスレ違いっぽかったので こっちで \n\n〜 と複数続いていたら \n一つだけに やるのは どうすればよいのでしょうか? s/[\n]*$/\n/g でうまくいきませんでした
s/\n+/\n/g;
306 :
304 :02/05/03 23:16 ID:???
>>303 マジカルインクリメントって .. じゃねーの?
308 :
303 :02/05/03 23:49 ID:???
>>308 そなの? perlopのRange Operatorsにそれっぽい事が書いてあったんだけど。
++はどうマジカルなの?
パターンマッチングについて質問させてください。 テキストファイル内の文字列をjcode.plにてEUCに変換後、 ひらがだけを抜き出したいのですが、検索対象文字リストを tr/ぁ-ん//cd にすると結果が文字化けしてしまいます。 この場合、検索対象文字リストはどのように指定したら良いのでしょうか?
311 :
303 :02/05/04 00:08 ID:???
>>309 Perlでは、数字じゃないものもインクリメントできるから、マジカル。
perlop の Auto-increment and Auto-decrement のとこに
「オートインクリメントオペレータには、ちょっとしたマジックが
仕込んである」と書いてある。
perlopには
「レンジオペレータは、数字じゃないものが来た時、マジカルインクリメント
アルゴリズムを使う」
って書いてあるよぅ。
>>310 オレは、そういうときは jperl を使います。
313 :
310 :02/05/04 00:12 ID:???
>>312 さん
やっぱりjperl使うしかないのですかねぇ・・・。
>>310 >>3 の[お薦め]に載ってるPerlメモってサイトを参考にしてみては?
>>311 んー。諒解しました。本家は ++ なわけね。
316 :
nobodyさん :02/05/04 00:26 ID:GNJILI/X
質問です。 ログファイルの$hoge[3]にそれぞれ数字がありまして その数の合計を求めるにはどうすれば宜しいのでしょうか? ログファイルは\tで区切ってあります。
317 :
310 :02/05/04 00:26 ID:???
>>314 さん
実はすでにあちらのメモも試したのですが、うまくいかなかったのです。
でも、実際のところはどこがうまくいっていないのか理解できていないので
うまく適用できていなかったのかもしれませんが・・・。
>>316 改善されてねーな
112 :nobodyさん :02/05/03 18:40 ID:???
>>110 「ログファイルの$hoge[3]」って何よ。
「ログファイルは\tで区切ってあります」ってのはレコード区切りが\nでデータ区切りが\tって事か?
わかるように書いてくれ。いや、大体わかっているんだけどな。
>>316 \tで区切ってるログファイルの4番目のとこに数字があるってこと?
$count=0;
open(FILE,"./$filename");
while(<FILE>){
@hoge=split(/\t/);
$count+=$hoge[3];
}
close(FILE);
print $count;
>>310 $_ = '文字コードがEUCの場合ね';
s/\x82[\x9F-\xF1]//g;
print;
これでひらがなだけ削れる
逆は自分で考えれ
>>317 $hoge ="123あいうえ456さしすせ-*/アイウabcdエオ";
$Zhiragana = '(?:\xA4[\xA1-\xF3])';
$hoge =~ s/$Zhiragana//g;
EUCこれでできるよ。
実行したら print $hoge; で表示されるのは
123456-*/愛上尾アウabcdエオ
あなたはどう書いてるの?EUCにコンバートするところとかは?
323 :
nobodyさん :02/05/04 00:53 ID:/IfudcOZ
他のサーバーにある画像ファイルのファイルサイズを取得するにはどうすれば良いでしょうか?
上のShift_JISだった EUCはこうか s/\xA4[\xA1-\xF3]//g;
326 :
310 :02/05/04 00:56 ID:???
>>321 (
>>324 ) さん
ありがとうございます!うまく動きました。
trを使っていたのが間違いだったのでしょうか??
兎にも角にも、ありがとうございました。
>323 LWPを使う。
(´-`).。oO(今日は妙に活気があるね…)
>>322 実行されて表示されるの違った結果かいちゃいました。ごめん
331 :
310 :02/05/04 00:59 ID:???
>>322 さん
お答えありがとうございます。そちらも試したのですが
SCALAR(0xc963c4)
のエラーがでてしまいます・・・。なぜでしょう?
質問するほうも、答えるほうも、はっきり言わせてもらうが レベルが低いよ。
333 :
310 :02/05/04 01:02 ID:???
>>322 さん
とりあえず、入力される文字列は全て
jcode::convert(\$hoge, 'euc');
にてeucにコンバートしております。
で、とりあえずいまはWin2000上のコマンドプロンプトで動かしているので
出力前にsjisにして出力しています。
334 :
nobodyさん :02/05/04 01:04 ID:/IfudcOZ
>>327 LWPですか・・
ちょっと調べてきます・・・
>>332 (´-`).。oO(はっきり言わせてもらうがレベル高かったら質問しないよ…)
336 :
310 :02/05/04 01:06 ID:???
>>322 さん
何度もレスすみません。動きました。こちらの記述ミスでした。
ただ、「イ」が消えてしまうのはやはりコード上の問題でしょうか?
(´-`).。oO(
>>332 は放置で…はいはい、次の方〜)
★★★ 質問者はコードを晒せ ★★★
if ( $situmonsha{'sex'} == $female ) { print "写真うpしる!話はそれからだ!\n"; } else { print "逝ってヨシ!\n"; }
(´-`).。oO(_gunzipは共有コテハンじゃないのにねぇ・・・はい、次の方〜)
342 :
316 :02/05/04 01:15 ID:GNJILI/X
>>319 エラーになっちゃいました。
$count+って使えます?
>>342 うちではエラーでないぞ。
コピペミスじゃない?
レベルが低いと言ったのは、1 に書いたことを無視した質問のしかたや 過去レスで何度も答えている内容をいまだに質問してくるということで、 そのために答えるほうもまとを得ない答えになってしまっているということ。
346 :
342 :02/05/04 01:38 ID:???
>>346 perlの本を読み直しましょう。
本もってないなら、買ってね。
>345 =~ s/_gunzip/_gnuzip/ 暇な奴だな(w
>>344 $x += 50; # $xに50を足す
$x = $x + 50; # $xに50を足す
↑何が言いたいのかわからん。
どうでもいいネタでいつまで盛り上がってるんだ。
LWPって何?
355 :
352 :02/05/04 02:13 ID:???
なぜlwpでは駄目だと判断したのかを書いたら?
358 :
ん〜さっぱわからん :02/05/04 04:11 ID:qVSStWkL
とある、ファイルがある。 んで、そのファイルには20行のテキストデータがあって その1行の文字数はマチマチである。 さて、このファイルの5行目から10行目までのデータを 読み込みたい。 でも、ファイル全部を読み込んで後から整形するのはいやだ。 どうすればいいのだろうかぁ?
>>356 あとは、wgetやWWWcp等の外部コマンドを呼ぶしか、簡単な方法は
無いと思う。
めんどくさい方法でもいんなら、Socket使ってうりうりやる方法もある。
>>358 foreach(1..5) {
<IN>;
}
foreach(1..5) {
push(@data,<IN>);
}
でどうかね。
361 :
nobodyさん :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 そんなに簡単にできちゃうの?もうずいぶんと長い間悩んでいるのだが
でも、それって結局ファイル全部読み込んでるのと同じじゃないのだろうか?
>>361 改行コードがDOS改行になってるっていうオチはないか。
とりあえず、telnet経由で単独で実行した結果の先頭5行くらいコピペ
してちょ。
364 :
365 :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
っつーのをやりたいのですが、やはりこの方法でやっているのでしょうか?
366 :
361 :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>
(以下略)
・・・どんなでしょうか?
>>366 っかしいなぁ。
出力はそれでOK。
ためしに、
#!/usr/local/bin/perl
print "Content-Type: text/html\n\nほげほげ";
だけ書いたスクリプトだとどうなるかな。これでだめなら、
webサーバの設定(httpd.confか.htaccess)がおかしいと思う。
>>365 read.cgiはperlじゃなくてCでしょ。
やってることは同じだと思うけど。
369 :
わかりましたぁ! :02/05/04 04:50 ID:qVSStWkL
>>368 ですよね。なんとか理解してきました。
早速試してみます。ありがとうございます。
・・・しかし、随分長い間Perl書いてるのになんで
教える側にまわれないんだろう?(ショボン
370 :
361 :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の方は見る事も禁止されてるので、なんとも言えません。
372 :
361 :02/05/04 05:37 ID:Wv66U69I
>>371 それが・・・それらのファイル、エラく大掛かりなんで、ドコを
どうイジったらいいか分析するのに凄く時間が掛りそうなんです。
とりあえず移動させずに、ブラウザからアクセスするとForbiddenと
言ってきます。これは、一応CGIの実行結果みたいです。
関連するらしいファイルをまとめて(怪しいですが)私のトコにコピーし、
ブラウザから呼び出してみると・・・500 Internal Server Errorになります。
あ、「ほげほげ」もやっぱり駄目みたいです。
>370 オマエには無理じゃないのか? FreeBSDのWebサーバ上にCGIスクリプトをアップしてるわけだろ。 秀丸で文字コード変換を試したっつーことはWinからアップしてるだろ。 アップはFTPだと思うが、結局アップするときにバイナリモードでやったのか? オマエのことだから自動変換かアスキーモードでやっていないか? あとは、パーミッションは大丈夫だと言ってるが、上位ディレクトリのパーミッション まで確認できてるのか? それと、371 が書いてることも合わせて確認しろ。
374 :
nobodyさん :02/05/04 05:40 ID:fEiPwaMd
すんません誰か力かしてください。 LWPで取得したデータを$xに入れる。 その$xをwhileで処理させる超シンプルなソースお願いです。
foreachを使った制御構造とwhileを使った制御構造がありますが foreachでも(1..5)とか指定すればwhileで5回繰り返しやったのと 結果以外の部分でも同じ位の負荷だとかになるんでしょうかね? 後、どっかのスレで書けるなら全部whileの方がいいと聞きましたが 全部読む必要があるときなんかもwhileで書いた方が良いんですかね?
376 :
361 :02/05/04 05:56 ID:Wv66U69I
>>373 ん?確かにWinからですが、CGIの類ってASCIIで
転送するんじゃなかったんですか?
パーミッションはpublic_html以下から、とりあえず777にしてみてます。
377 :
361 :02/05/04 06:09 ID:Wv66U69I
>>373 CGIの類っちゅうか、スクリプト言語の類ですね。
378 :
371 :02/05/04 06:09 ID:???
>>376 ASCIIでやったほうが、改行コード変換してくれるので楽だけど、
できればあらかじめUNIX改行(LF)にしておいて、バイナリモードで
転送したほうが確実。
(
>>363 で改行コードの指摘したのはそれなんだけど)
んで、Forbiddenってのは、CGIの実行結果じゃく、サーバが返してる
エラーだと思うんだけど、それはおいといて、
まずは
>>367 の2行スクリプト試してよ。
不安なので、public_html/ 直下に置いて、.htaccess アリの場合と
無しの場合と、telnet で直接実行した場合の3通りの結果よろしく。
379 :
361 :02/05/04 06:42 ID:Wv66U69I
>>378 EUCにしておいてバイナリモード転送。・・・同じですね。
でも、363の内容で問題が起こってたとしたら、
単独実行も出来なかったのでは?
その人は403.htmlってファイルを自分で用意してて、
それを表示させてるみたいです。
試しましたよ。「ほげほげ」って、その2行スクリプトの事です。
先程改めて、EUCにしておいてバイナリ転送して試しましたが、駄目みたいです。
public_html直下に置く件、.htaccessの件、直接実行の件、
試しましたがどれも駄目みたいです。
380 :
371 :02/05/04 06:51 ID:???
>>379 EUCは文字コードで、改行コードとはぜーんぜん関係ないんだけど、
それはまぁいいや。
とりあえず、例の2行スクリプトがだめなら、君のせいじゃなくて、
サーバの設定の問題しか考えられないので、管理してる人に
相談しよう。
AddHandler cgi-script .cgiは?
382 :
361 :02/05/04 07:24 ID:Wv66U69I
>>380 へー、今までそれらはセットになってるんだと思っでもてました。メモメモ。
でも、373の彼もその辺まで考えてたとは思えないなー?
もう5日前からサポートにメールしてるんですが、リアクションが無いんです。
GWをフルに休んでるのか、誰もメールをチェックしてないのか・・・
太陽が眩しい。とりあえずもう寝ます。お付き合いありがとうございました。
>>381 ん?・・・それ、今.htaccessに追加してやってみました。駄目です。
う〜ん、つ〜かさ 結局今まで出ているエラーは 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ほげほげ"; ↑こうやっても駄目カナ? 以前、一度これではまった覚えあるから…
どうせperlのパス間違ってるとかScriptAliasが設定してあるとかだろ。
385 :
383 :02/05/04 07:43 ID:???
もし、↑で動くんだったら、conf/mime.types がオカシイという落ちになる
>>384 (゚Д゚)ハァ?
何言っているの君?
>>361 > エラーログを見ると、「Premature end of script headers」となっています。
> ・・・スクリプトヘッダーの時期尚早の終わり?とな?ん?
> 他の人が作っていたCGIを見てみても、とりあえず一行目の
> 「#!/usr/local/bin/perl」というのは一致しているし・・・
日本語読めますかぁ?
>>382 フリー鯖ならちょっと試してみたいのでどこなの教えてほしいんだけど、
telnet使えるってことはフリーじゃないか。
Premature end of script headers ってスクリプトが実行できていないときにも出るよ。
>>383 #!/usr/local/bin/perl
の行が間違ってても、Premature end of script headers になるよん。
なので、改行がDOS改行(CR+LF)になってると、
「/usr/local/bin/perl^M」ってファイルを実行しようとして、上記のエラーになる。
ただしその場合、コマンドラインから実行しようとすると、コマンドが
見つからないっていうエラーになるはずなので、今回はあてはまらないんだよね。
>>389 鬱。間違えた
>>388 が正しい。ゴメソ
>>398 > ただしその場合、コマンドラインから実行しようとすると、コマンドが
> 見つからないっていうエラーになるはずなので、今回はあてはまらないんだよね。
だから、cgi は動いていると判断するのが妥当だろ。なんで、.htaccess に
話をもって行くのが疑問…
設定がうまくいってなくても Premature end of script headers でるよん。
Premature end of script headers でるでる言われても例示してくれないと説得力無いな。。。
Premature end of script headers は suExec失敗したり、 いろいろなケースが考えられるんじゃないかな? 質問者の利用している環境がよくわからないので、何とも言えませんが。 Perlスクリプトとしては実行できているのに、CGIでは動作していない ようなので、あらゆる可能性を考えてみるのも悪くないと思うよ。 まぁ、こういう時は、単純なケアレスミスだったりするかもしれないけど。
395 :
nobodyさん :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文を抜け出してくれません。 配列にデータが入ってない場合はどのように条件にしたら良いのでしょう。
397 :
395 :02/05/04 13:36 ID:???
>>396 どうもです。andで成功しました。
恥ずかしいミスだぁ・・・
KENTさんの掲示板でトリップを使おうとして 17氏のbbs.cgiからトリップの部分だけコピペしましたが動作しませんでした・・・。 どうすればトリップが使えるようになりますか?
>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のアパッチ。
401 :
nobodyさん :02/05/04 16:24 ID:638lh9Jm
ユーザ管理用のプログラムを作っています。 そのデータ管理ファイル内にパスワードを 平文のままで保存しておくとセキュリティー上問題が 在ると思います。 しかし、ユーザIDとメールアドレスをユーザが入力すると その2つと一致したデータのパスワードを 相手にメールで通知したいと思います。 そこで、そのようなプログラムはどのように組めばいいのでしょうか? 暗号・復号可能なパスワードのロジックなど存在するのでしょうか? アドバイスをお願いします。
403 :
ん〜 :02/05/04 16:30 ID:qVSStWkL
>283=>402 あまりに基本過ぎてネタとしか思えないんだが。 第一引数の配列の末尾に第二引数を要素として加える。 第二引数はダブルクォーテーションとして囲まれてるから文字列として加えられる。 頼むから初歩の初歩的なことくらい自分で勉強してくれ。
405 :
nobodyさん :02/05/04 16:39 ID:638lh9Jm
>>403 cryptだと、ユーザが入れたパスワードが
在っているかどうかのチェックはできると思うのですが、
パスワードを忘れたユーザに対して登録しているメールアドレスに
通知するとき、もとのパスワードはわからないですよね?
かといって、平文で保存しておくと、セキュリティー上やばいでしょうから。
皆さんのお知恵をお借りしたいのです。
>>405 xorでも取れば?
8文字なら64bit通りの可能性がある暗号化となる。
>>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}");
}
>407 $sqcookie[@sqcookie] = "${name}_${value}"; こういう書き方をすればわかるかな? 強引なやり方だが意味は同じ。 ${name}は$nameと同じ。 何でそういう事をしているかというと、$name_$valueだと、 「$name_」と「$value」を足す事になって、「$name」と「_」と「$value」を足す という意味にはならないから。 変数にどの文字が使えるか考えればわかる事。 ${name}という表記の仕方は覚えておくといいよ。 変数名に変数を使いたい時とかに役立つ。 質問の意図を一部誤解していたみたいですまない。
>405 複合化できたら平文で保存するのとあまりセキュリティ上の危険さは変わらないと思うけど。 (自分で複雑なのを組むとか言うなら別だけど。) それなら、確認のメール入れてそこからアクセスして変更ってのが一番楽かと。
410 :
360 :02/05/04 17:39 ID:???
>>400 スマソ。そうなるね。
#(ok)のようにしてちょ。
もしくは、明示的に、
push(@data,scalar(<IN>));
と。
>>405 メールアドレスをキーとして、暗号化しよう。
そしたら、メールアドレスが分かる場合だけ元に戻せる。
クッキーの読み込みで、 a1 a:aaaa * a2 a:aaa * a3 a:aa * こんな感じで保存されているクッキーがあって、 $COOKIE{a}と書くと aaaaのみ表示されて、 aaaa aaa aa と表示されません。 どうすればいいのでしょうか?
>>412 ↓これ、どういう意味?
a1
a:aaaa
*
a2
a:aaa
*
a3
a:aa
*
414 :
412 :02/05/04 17:55 ID:???
>>413 クッキーにそうやって保存されています。
415 :
413 :02/05/04 17:58 ID:???
>>414 改行されてるのは、9個の別々のクッキーが得られるってこと?
それとも、これ繋がってるの?
416 :
412 :02/05/04 18:10 ID:???
一つのファイルの中に a1 a:aaaa * a2 a:aaa * a3 a:aa * このように書かれています。 *で区切られています。 a1 a:aaaa * これで一つです。
417 :
415 :02/05/04 18:13 ID:???
>>416 ファイル??クッキーじゃないの?
まぁいいや。で、
a1
a:aaaa
の a1 ってなに?コメント?
a:aaaa の a と aaaa って何? a が キーで、aaaa が値?
418 :
412 :02/05/04 18:20 ID:???
>>417 そうです。a が キーで、aaaa が値です。
419 :
415 :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);
420 :
412 :02/05/04 18:40 ID:???
>>415 すみません。ファイルでは無くてクッキーでした。
説明が足りませんでした。
>>420 つーと、
>>416 は、なんかの変数に入ってるの?
改行されてるのは何故?
つーか、
>>416 の文字列は、どっからコピペしたの?なんかの出力?
422 :
412 :02/05/04 18:56 ID:???
>>421 失礼ですがクッキーの事はご存知なんでしょうか?
423 :
421 :02/05/04 19:01 ID:???
>>422 うん。掲示板作る時に使ったよ。
で、オレが知ってるcookieは、$ENV{'HTTP_COOKIE'};に渡されるんだけど、
>>422 のクッキーっていったいなんなの?
424 :
412 :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;
}
取得の方法は↑です。
僕が利用したいクッキーはチェックを入れた項目のみをクッキーに保存しています。
バナナにチェックを入れるとバナナ:はい
となります。
で次にジュースにチェックを入れるとすると
バナナ:はい
ジュース:はい
とならずに
そのままクッキーに上書きされて
ジュースのみはいとなってしまいます。
これを
バナナ:はい
ジュース:はいとバナナの下に追加で書き込めるようにしたいです。
先程のやり方もありますが、メンドクサソウデスノデこの方法解りますか?
>>424 うっかりソースを晒したからCGIスレの黄金厨118だって事がバレちまったな(w
で、この問題については他のスレできちんとした答えをもらっているだろ?
キーが全てaだったらそりゃ上書きされる。キーを変えれ。ハッシュを学べ。
426 :
412 :02/05/04 19:25 ID:???
すみません。簡単に説明すると掲示板でメールをクッキーに保存して 読み込むとhoge@***となります。 そのhoge@***を消してまた情報を送信するとクッキーには 2度目に記入したメールアドレスがクッキーのメールの部分に上書きで保存されるとします。 そこを、 メール:hoge@*** メール:2度目に入力したもの このようにクッキーに保存して、 1度目に記入したメール hoge@***読み込んで 2度目に記入したメール 2度目に入力したもの と読み込みたいです。
427 :
412 :02/05/04 19:28 ID:???
CGIスレに書き込んだのは一度きりで、 あれは偽者です。 信じるか信じないかはあなたの自由ですけど、、、。
>426 $cookie{'mail1'}にまず最初のクッキーを保存。 2度目では$cookie{'mail1'}を$cookie{'mail2}にコピーしてから、$cookie{'mail1'}を上書き。 同じキーでは無理だから、別のキーを考える。
>>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読む時はエスケープも解除してやれ。
430 :
423 :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も付けたきゃ勝手に付けてくれ。
>>430 同じキーを持つクキーはそもそも保存されないんだってさ
432 :
430 :02/05/04 21:06 ID:???
>>427 _____________
(つかえねぇ奴らだな。氏ね!!)
 ̄ ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ̄ ̄ ̄ ̄ ̄| ___________
| ∧_∧ | ∧_∧ /
| ( ´∀`) | (´∀` ) <オマエモ・・・オレモナー??
| ( ???:bI ) .| ( Id:??? ) \
| | | | .| | | |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| (__)_) .| (_(__)
. ̄ ̄ ̄ ̄ ̄
※偽者防止のため、IDは必ず出しましょう。
PC初心者でもやってるぞ。
435 :
nobodyさん :02/05/04 21:24 ID:GvcNIgW1
サブルーチンについての質問です。 sub function { ######省略 } を呼ぶとき function(); と &function; の2つのやり方あるみたいですけど、どっち使ってもいいの?
>435 後者の方がいい。 汎用性のあるものを組みたいなら特に。
437 :
435 :02/05/04 21:29 ID:GvcNIgW1
>>436 ありがとう。
自分が持ってる参考書にfunction()しか載ってなかったから使っちゃいけないのかと思ったよ。
438 :
:02/05/04 21:35 ID:dGBL2sA8
画像スケールを縮小してサムネイルをつくってアルバムにするCGIを作りたいんですが どうしたらよいのでしょうか?
#!/usr/local/bin/perl print "content-type:text/html\n\n"; ここからまずフォームを作ります。 それからログファイルを開いて読み込みます。 で表示します。 ログ書き込み処理 \nや<>とかを変換します。 そうしたらログを開いて書き込みます。 そして閉じます。
>435 Perl5以降ならfunction()でいいと思うけど。 普通のプログラミング言語ではfunction()と書くので、&を付けると嫌われる。 ただでさえスカラーの前に$とか付いて笑われているのに。 一生Perlしか使いそうにないなら&functionでもいいけど。 ただし、&functionとfunction()では若干動作が異なるとだけ覚えておいてください。
つか&functionだとプロトタイプが効かねぇのが嫌です。 尤も、「貧弱なプロトタイプなんぞいらん」とか 「関数なにそれ?メソッドのこと?」って人には関係ない事ですが。
index.htmlのないディレクトリにアクセスするとファイルリストが表示されるものがあります。 しかし私のサイトではそれが許可されていません。 perlプログラムであるディレクトリ以下を全部回って それぞれにindex.htmlファイルを作っていってくれるプログラムを知りませんか。
443 :
nobodyさん :02/05/04 22:26 ID:3kOee6Z3
あげるの忘れた。
>知りませんか。 作ればいいじゃん。
445 :
nobodyさん :02/05/04 22:39 ID:3kOee6Z3
>>444 あっさり言いますけど。間違えてサーバー内で無限ループって恐怖があって。
再帰の深さに制限付ければOK。
下げるの忘れた。深さは2つまででいいですが。
>>442 スレ違いな回答でわるいんだけど、
.htaccess に
Options +Indexes
って一行書いておくと、うまくいくかも。
(サーバの設定次第だけど)
うちのサーバーはそれもDirectoryIndexもできないのです。
自分にとって、可読性の高い方で書けばいいじゃん。
やたらサブルーチンで&使うの嫌う人居るけど処理的に どういう差があるんですかね? rootin();と&rootin;どちらでもいい状況なら俺も後者使うんだが。
>>449 むぅ。
したら、仕方ないので、perldoc File::Find で GO!
453 :
thanks.html :02/05/05 01:39 ID:nX5kzORe
>>410 アリガソ。
うむ、なんでかわ良くわからないんだけど(・・漏れってつくづく
基本がなってないヤツだ・・・)
#(ok)のほうじゃないとダメなんですね。覚えておきます。
454 :
nobodyさん :02/05/05 01:50 ID:nX5kzORe
>>454 うん。requireしてもしなくても変わんない。
>>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";
}
モジュールの『使い方』より具体的なコードの方が見てて楽しいけどね。
(゚д゚)ハァ?
>>456 の sub dir{...} の部分をFile::Findに
置き換えるだけ、と言っていいじゃん。最近は、ドキュメント
も読まず、自分で知恵も出さず、安易にコードをパクろうと
する厨が多すぎ。
&付ける奴ってKENT WEBとかで学習した厨房だろ。アホに限ってよく&付けてるな。
&を付ける奴は居ないだろ。
>>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";
最近やっとPerlの便利さがわかってきたよ。
foo()と&fooはまるで意味が違うのにさえ気をつければどっちでもいいだろ。
カウンタを作っていてあと一歩のところまで来ているのですがうまくいきません。
症状
10・11・12・13・14・・とカウントアップしていき
18まではいいのですが次にリロードすると19のはずがなぜか29と表示されてしまいます。
そのあとはまた20に戻るのですが、再び21・22・23・・とカウントアップし
28まではいいのですが29のはずが39と表示されてしまいます。
ソース
http://ruffnex.oc.to/ipusiron/upload/417.txt どなたか原因わかりますでしょうか?
表示させるときは <img src="./counter.cgi?4"> <img src="./counter.cgi?3"> <img src="./counter.cgi?2"> <img src="./counter.cgi?1"> という感じにして呼び出しています
>>465 19 の画像が 28 というオチじゃないよね?
>>465 一文字切り出し時の処理が変なんじゃないの?
>>460 >KENT WEBとかで学習した厨房だろ。アホに限ってよく&付けてるな。
真性のPCヲタとかは知らんけど普通の人が別に趣味で覚える分には
最初は大体そんなもんです。実際&〜;でも〜();でもどっちでもいい。
>>467 いや、画像は0〜9までで一桁ずつ切り出して処理してます
>>465 俺の環境ではその様な現象起きなかったよ…
つか、画像一体型じゃ駄目なの?その方が鯖にかける負担も少なく済むし
>>472 画像一体型というとgif連結ですか?
まだ始めたばかりなのでまずは簡単なのからやってるので。。
当方win98se + アパッチ + アクティブperlです
>>473 なら、fly 使ってできるよ。俺はそれ使ってる
475 :
nobodyさん :02/05/05 19:30 ID:eXghpSwQ
>465 原因は、画像がブラウザのキャッシュに残ってるからだとおもいます。
476 :
nobodyさん :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したほうがいいですか?
>>408 亀レスですが、ありがとうございます。よくわかりました。
>>476 すべきでしょう。途中で内容書き変わったら困るでしょう。
>>476 読み込み時は共有ロック、書き込み時は排他ロック
>>476 むしろ二度開けてるのをなんとかした方がいいんでない?
>>479 信頼性落ちない?カウンタにそんなもん求めても仕方ないけど。
483 :
476 :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); こんな感じ?
>>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;
485 :
476 :02/05/05 23:24 ID:lg58HjNF
危険というのはどうなってしまうのですか?
>>485 openと同時にファイルが(一時的に)空になる。
よって、書き込む前に自分がクラッシュしたり、誰かがロック権を得たりすると破滅する。
487 :
476 :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);
通りすがりの Perl 好きです。
>>486 勉強になりますにゃ。
>>487 で、
データの量が、処理前より、処理後の方が小さくなるとき、
おかしくなりませんでしたっけ?
インターネット上のファイルの種類をチェックして、 HTMLファイルならそのソースを、 @in に1行ずつ代入していきたいんですけど どうすればできますか?
>>489 なるね。truncate()すればいいのかもしんないけど。
>>490 lwpつかって、HEADすればいんでないかな。
>>492 すいません、よくわかりません。
詳しく説明されているHP等ご存じですか?
>>491 Cookbookでは、こうやってるね。
seek(FH,0,0);
print FH @data;
truncate (FH, tell(FH));
close(FH);
496 :
476 :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);
flockってopenの後で良いの?
500 :
476 :02/05/06 00:34 ID:/skFdheW
>>499 ファイルに書き込む場合(2回目のopen)を+>にしたらだいじょぶかと思ったけど
だめですか・・・。
501 :
476 :02/05/06 00:42 ID:/skFdheW
なんどもすみません。
やはり
>>487 のやり方にしました。
ありがとうございました。
>>500 &496
+> を +< に訂正。
502 :
495 :02/05/06 00:42 ID:???
503 :
nobodyさん :02/05/06 00:58 ID:/8u085RL
こんばんわ、今「perl」を勉強しているんですが、「perl」を使いこなせるように なれば、具体的にはどんなことが出来るのでしょうか? アプリとか作れるのでしょうか?自分が知ってるのはCGIを作れると言うぐらいでよくわかりません。 厨名質問ですが、どなたかご教授願います。
>>503 >いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。
cookieを出さない、cookieを食べない場合にエラー表示させたいのですが…。
508 :
495 :02/05/06 01:41 ID:???
>>507 食べないは難しいけど、出さないは
print "Fuck So Reena!" unless $ENV{'HTTP_COOKIE'};
とか。
511 :
510 :02/05/06 02:17 ID:???
>>508 だと一度もクッキー食べた事が無い人も弾いてしまう?
512 :
nobodyさん :02/05/06 02:43 ID:e2HRGuxk
perlで一般的な文字列置換をする場合、最長一致で置換されると思うのですが、 これを最短一致にするにはどうしたらいいでしょうか。 よろしくお願いします。
513 :
508 :02/05/06 03:04 ID:???
>>511 もちろん、問答無用で。
なので、食わせるページと、チェックするページを分けたほうが
いいとおもうね。
>>512 perl5の本読んだ?
.+? みたいに、+や*に? つけると最短一致ぜよ。
515 :
nobodyさん :02/05/06 03:31 ID:e2HRGuxk
516 :
503 :02/05/06 04:22 ID:/8u085RL
>>505 >>506 さん、ありがとうございます。
他のみなさんへスレ違いな発言で、ごめんなさい・・・
もっと精進します!
open(IN,"$logfile") || &error; この省略した書き方について誰か説明お願いしますm(_ _)m
>517 ネタか?
>>475 どうすれば直りますか?
いちおうkent氏のカウンタで試したら普通にできたのに
なぜか俺が作ったのだと19→29、29→39になるんだるう
>>521 select(undef, undef, undef, 0.5);
これを
select(undef, undef, undef, 2);
か、もっと大きな数にするとなおんない?
>>517 どこが省略されてるの?
$logfileを読み込んで、読み込めなかったら&error;吐くようになってるだけでしょ?
>>523 普通は-eとかif混ぜて書くんでないの?多分
>>523 いやまだ初心者なんでよくわからんのですがperlはいろいろな書き方があるらしいので
そういう書き方が普通にあるのか余分な部分をはぶいて省略されている書き方なのか知りたかったのでし
if (!open(IN,"$logfile")) { &error; }
↑でもいいんですよね?
'||'ってifとかの条件判断のときにしか使わないものだと思っていたもんで。。
ま、基本的に演算子だからねぇ。 print 3 + (2 > 1) * ('a' cmp 'b') - (1 | 2) * (3 && 4);#=> -10
528 :
465 :02/05/06 12:24 ID:???
>>465 ですが直りました!
なぜか他のサイトで配布されているのはうまくいかないのに
処理がほとんど同じ俺がつくったやつは変な症状が出ていたので
動くほうのコードをちょっとずつ自分が作っているコードと入れ替えてみたら
なぜか動きました。。やっぱりキャッシュが壊れていたのかな?
ありがとうございました。御礼にあとで2ch用のアップロダうpしにきます
>>525 Cでもできるけど、普通の神経の持ち主ならやらないね。
標準的なスタイルってのが決まってるから。
main() {
0 || puts("a");
1 || puts("b");
0 && puts("c");
1 && puts("d");
}
Perlでは好んでやるね。やり方は一つではない、が信念だから。
Cでやらないのは処理系依存だからだと思っていたが、単なる習慣の違いだったのか?
>>530 そうかも。今、確認できる本がないのですまん。
532 :
nobodyさん :02/05/06 16:26 ID:usSooVS5
Perlのオーサリングツールって無いかなぁ〜 J++や、JBulderのIDE見たく、画面デザインと、 コードつなぎ合わせてくれて、ノンコーティングとまではいかないまでも うまい事やってくれるツール そんなうまい話無し?
>>530 処理系依存なのは f(a-1, ++a) の
どちらの式が先に評価されるか、じゃなかったかなぁ。
&&, || の評価順は保証されていたはず。
ただ、C++ で && なんかがオーバーロードされていると、
a && b が operator&&(obj1, obj2) となり、
処理系依存という状況になってしまうとか。
(More Effective C++, Item7 より)
>>532 Visual Perl とかどうなんだろう。使ったことないけど。
掲示板で半角スペースの連打や全角スペースの連打を弾くにはどうすれば良いのでしょうか? 半角スペースや全角スペースを1つのみを弾くのは簡単ですけど、、、。
( ゚д゚)
(´-`).。oO(
>>534 /PATTERN/g)
537 :
534 :02/05/06 17:05 ID:???
>>536 それだと名前欄に1 1と書くと11となりますよね。
538 :
534 :02/05/06 17:14 ID:???
>>534 $hoge !~ / +/ && $hoge !~ / +/ && $hoge ne ''
>>538 全角スペースは文字コード体系に依存するからそれは正しくない
$hoge !~ /\s+/ && $hoge !~ /\x81\x40+/ && $hoge ne ''
これだと、shift-jis 専用になる
541 :
nobodyさん :02/05/06 17:30 ID:KUbhtzR3
(´-`).。oO(誰が誰なんだか分からなくなってきた・・・)
>>541 ゴールデン厨登場〜
はやく糞コード書きにカエレ!
544 :
nobodyさん :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しないといけないんでしょうか?
546 :
nobodyさん :02/05/06 19:28 ID:0erw8YvU
>>545 やっぱりそうですか。。。
重くなるかと思って・・・。
ありがとうございました。
>>442 ありがとうございます。
>>456 サーバーエラーになりました。
>>462 動きましたがindex.htmlファイルは置いていってくれませんでした。
自作なのでしょうか。こんなのをすぐに作れるのはすごいと思います。
548 :
462 :02/05/06 23:19 ID:???
>>547 親ディレクトリには戻れないので、できるだけトップディレクトリに
置いてね。
>>545 え、なんで?そのまま使えるんでは?
(そうじゃなきゃSocket pipeliningとかできないじゃん)
550 :
549 :02/05/07 02:36 ID:???
あ、よくみたら544が使ってるのはHTTP/1.0だった。すまん。 HTTP/1.1ならできるはず。
perlで書かれたCGIの負荷を数値でみれるソフトとかってあります?
553 :
:02/05/07 15:10 ID:???
ベンチマークテストすりゃいいじゃん。
>>554 それは答えになってないミョー(ι´д`)
数字の入った変数に千単位でカンマを挿入したいのですが、 どのようにしたらいいでしょうか。 ちなみに最初の一つだけ挿入できました。
ありがとうございます。すごい!一行でできるんですね。
559 :
nobodyさん :02/05/08 00:54 ID:ZY3V1UfD
csvファイルの中から任意の文字列を検索し、一致したデータを 一覧表示するというものをつくりました。 その結果表示は10件以上になると「次の10件」をクリック すると11件以降のものが表示される、というようにしています。 ところが、例えば「大阪」というキーワードで検索すると、最初 の10件は正常に結果が表示されます。 しかし次の10件以降の検索結果表示がうまくでないのです。 どうやらキーワードの「大阪」が2度目以降の送信時に文字化け して検索結果0件となり上手く検索ができないようなのです。 さらによくわからないのが、一度「検索結果0件」とでたあとに ブラウザを再表示すると、正常な結果がでてくるのです。 (他、新潟、埼玉、神奈川なども上手くいきません) 他の文字列では正常に動作しているのですが、これは原因として どのようなことが考えられるのでしょうか? 基本的なことなのかもしれませんが、宜しくお願いします。
的外れだったらごめん。前回の検索文字列は次のアンカーに書き出すときに 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); }
$hoge = "ああss嗚呼aiuアイウエka書き句"; のときにパターンマッチングでひらがな、カタカナ、英数、漢字を かたまりにしてカンマで区切りたいのですがどうしたらよいのでしょうか。 希望出力結果としては ああ,ss,嗚呼,aiu,アイウエ,ka,書,き,句, としたいと思っています。入力はEUCで行っています。 どうもperlで漢字やカタカナを一文字ずつチェックする方法がわからなくて・・・。 Jperlを使わない方法では無理なのでしょうか?
間違った。しかも遅レスだから見てないな。 printf qq(<a href="$0?value=%s">次の10件</a>), &URI_Escape($QUERY{'value'});
>>562 何に使うのか教えてくれたらズバリなモジュールを教えるが。
565 :
560 :02/05/08 21:47 ID:???
>>561 ありがとうございます。
実はまだよくわかっていないんですが、とりあえずレスいただいた内容を
理解できるように調べることからはじめてみます。
566 :
562 :02/05/08 22:33 ID:???
>>564 利用用途は大学の研究です。
データマイニングするためのキーワードを
Webから自動的に生成するのが目的です。
568 :
562 :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>
>569 どう見てもPerlではない。
571 :
nobodyさん :02/05/09 06:12 ID:GzFA/V4O
>>569 安全。安心してゴー。けどそのソース見る限り行った後の利益もなさそうだが
cgi-lib.pl使った、ファイルのアップロードについて解説してるページないですか?
シェルスクリプトを使った、ファイルのアップロードについて解説してるページないですか?
CGI.pm使った、ファイルのアップロードについて解説してるページないですか?
念力使った、ファイルのアップロードについて解説してるページないですか?
ググルを使った、ファイルのアップロードについて解説してるページないですか?
google で (?: のような perl でよく使う表記の記述方ってないですか? '' や "" で囲っても - とかが勝手にエスケープされるんですけど・・・。
エスケープ使った、ファイルのアップロードについて解説してるページないですか?
ネットエスケープ使った、ファイルのアップロードについて解説してるページないですか?
581 :
nobodyさん :02/05/10 01:40 ID:pbuX7CBp
Javaのエラーログみたく、スタックダンプを表示したいんだけど、 やりかた、おせぇ〜て
CPANで拾ってきたモジュールをインストールしようとしたんだけど、 中見ると、モジュールファイルが一個だけで、何処にコピーしたら いいか分らないんだけど、 インターネットで検索すると、perl Makefile.PLしたあと、 makeしてみたいなか事書いてあるんだけど、 ん〜〜、どうなってすか? おせぇ〜て
>>581 print _STACK_DUMP_;
>>582 > perl Makefile.PL
> make
$xx++; if($xx=2の倍数){$color=#FFFFFF;} として2の倍数の時のみ色を白に変えたいんですけどどうすれば良いのでしょうか?
>>578 Googleサイトのマニュアルにある以上のことは無理。
>>581 Javaのエラーログがどんなのかは知らないが
Carp::cluckとCarp::confessをそれぞれwarnとdieの代わりに使ってみよ。
見当違いだったらすまそ。
>>582 ピュアPerlなんだな?*.xsっつーファイルはないんだな?
それなら@INCにあるフォルダに突っ込めばとりあえずは動く可能性がある。
環境変数PERL5LIBの意味も調べてみろ。
>>584 if($xx % 2){ .. }
これは「もし$xxが2で割り切れたら」と読む。
587 :
584 :02/05/10 12:42 ID:???
>>586 2で割り切れたら、、、。
すいませんありがとうございました。
2週間ぐらい考えてました。
588 :
数百のカテゴリ分け例を求む :02/05/10 12:46 ID:xN5d7c7l
>>587 SQLを使ってホームページの自動URLリンクプログラムを作っていますが、カテゴリー分けの作成に困っています。
数百程度に細かく分けたいのですが、自分で考えると偏りそうで。
カテゴリ分けサンプルなど参考になる文献やサイトはないでしょうか。
589 :
584 :02/05/10 12:56 ID:???
587でしょうか? 私でしたら2で割る数の求め方を知らなかった人間ですので、 ちょっと。
592 :
nobodyさん :02/05/10 14:00 ID:Pgg0tTKK
画像アップロードできる掲示板つくりたいんだけど、 やり方教えて・・・・。
>>592 作りたいものに近いcgiを落としてきてソース見て勉強しろ
595 :
nobodyさん :02/05/10 14:54 ID:Pgg0tTKK
596 :
582 :02/05/10 15:50 ID:???
>>583 レスども、
tar.gzの中に、Makefile.PLが入ってないんですよ、
単に、*.pmファイルがあるだけで、
こういう場合どなんでしょ?
>>594 あっ…!
>>584 すまん、間違えた
「割り切れたら」は
if(($xx % 2) == 0){ ... }
だったわ。
598 :
数十でもいいよ :02/05/10 16:37 ID:mOuIPJt0
>>591 ありがとうございます。こちらはとてもよく構成されていると思いますが、どうも全体が見渡せません。
1ページ程度内にすべてのカテゴリーが一覧として載っていて全体がわかりやすいカテゴリーのリストを探しています。
>598 少しは努力しろよ
600 :
nobodyさん :02/05/10 17:10 ID:ZA7s2wmA
先生!漏れはバカなので本を見てもあまりよくわかりません 猿でも厨房でもわかるPerlの基礎について学べる サイトを教えてください。(3にあるお薦めも難しいです・・・
(´-`).。oO(
>>600 3にあるお薦めも駄目なら、逝ってヨシ…)
「プログラミング」という行為、学習で perl が初めてなら、
先ず、javascript 辺りから始める事をお薦めします。
perl はある程度他の言語の「プログラミング」経験が
ある人じゃないと、いきなり学習するのは辛いかと…
C++とPerlとJavaScriptをまとめて開きながら交互に作業してます。 ついつい文法がごっちゃになってエラー出してしまうオイラは逝ってよしですか?
603 :
nobodyさん :02/05/10 18:58 ID:Pgg0tTKK
____ ◎;;;; ・∀・;;;) チクーワ  ̄ ̄ ̄ ̄
604 :
nobodyさん :02/05/10 21:05 ID:DbBvL4ha
606 :
604 :02/05/10 21:39 ID:DbBvL4ha
…すみません。慌てて書き忘れました。 Win2000でhttpdVer.1.39f、PerlはActivePerlです。
607 :
nobodyさん :02/05/10 21:53 ID:/cNgrcGu
◎;;;; ・∀・;;;) チクーワ (・∀・)イイ!
>>604 ざっと見たが、とりあえずまともに動くコードには見えない。
だがサーバーが落ちるような原因は見当たらないな。
常に落ちるってのならともかく3/10じゃお手上げだ。
ついでに余計なおせっかいだが、
そのサンプルは相当な糞コードだな。
まともな本で勉強したほうがいいぞ。
609 :
604 :02/05/10 23:06 ID:DbBvL4ha
どうもありがとうございます。 やっぱサンプルから横着しないで一から自作だな…
610 :
nobodyさん :02/05/11 02:07 ID:qFv6V9OI
Perlだけで実現できる、SQL型データベースのモジュールって 無いですか?
use Psql;
612 :
nobodyさん :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 のところの特殊変数で「マッチしなかった文字列」なんて あるわけないですよね…特定できないし…
>>612 どのフィールドが固定なのか条件をはっきりしやがれ。
>>612 まずは perlretut でも読め。繰り返し指定と ? の効果を調べろ。めちゃくちゃだ。
>>612 その場合なら普通に
$hoge =~ s/(head:).*(def)/$1$3/;
これでいいんじゃないの。
616 :
nobodyさん :02/05/11 13:37 ID:7MEyepY2
KENTさんの「自宅サーバー化計画」を見たのですが CGIの動作を確認するならやはりこのように オフラインでテストできるようにした方がいいのでしょうか?
>>616 俺はローカルテスト一切しないな。経験的にほぼ動作見切れるから。
>>616 当然。自分のサーバならともかく、人様のサーバでテストする奴は迷惑馬鹿。
621 :
:02/05/11 15:55 ID:???
>>616 俺もやるな。
あぷする手間も省けるし。
経験的にほぼ動作見切れてる
>>617 が妄言を吐いているスレはここレスか?(藁
623 :
612 :02/05/11 17:45 ID:???
すんません。
>>613 >>614 の言っている事が初心の俺には解りません
文字列の "head:" と "abc." は固定です。"head:" は必ず、行頭に
1回しか出てきませんが、"abc." は色んなところで複数回出てきます。
"def" は固定ではないので
>>615 の場合だと、"def" 以外の時は
機能しなくなってしまいます
>>623 勉強する気は無いんかと。()でグルーピングして * とか + とか {m,n} とか知らんのかと。
$hoge =~ s/(?:abc\.)+//;
>>622 小さいなあ。
君のような弱小レベルでは妄言に見えるけどそういうレベルの
人間も世の中には確実にいるのだよ(藁
617=625=626 ( ´,_ゝ`)プッ
628 :
しょぼいSE :02/05/11 19:32 ID:QCHMLNRj
2chらしい掲示板にマジ質問ですまん。 他人様のホームページをインラインフレームで表示するときに、表示した他人様のページのスクロールバーを消す方法ってある? CGIでできるかと思ったけど、方法がわからん(−−;
>>622 設定ファイル書いて「このプログラムも完璧に動いた、俺って天才」つーてるんだよ。
そういう世界もある事をわかってやれ。
630 :
612 :02/05/11 19:51 ID:???
>>624 > 勉強する気は無いんかと。()でグルーピングして * とか + とか {m,n} とか知らんのかと。
ありがとうございます。ほとんど昨日、今日perl始めたばっかりの房なので…
() って、$1 とかに突っ込む以外にも効果あるんですね。
?: が無くても期待する結果が同じなのが謎なのでその辺を自分で勉強します
>>625 完璧に見切れます、というのならともかく「ほぼ」じゃダメだろ。
そもそも完璧じゃなさそうなのだが。まあ
>>629 が真実なんだろうな。
>>628 それはHTMLとかCSSの仕事。
HTMLならscrolling="no"、CSSならoverflow: hidden;あたり。Web製作板へGO。
>>617 が馬鹿だってことは、経験的にほぼ見切れる俺。
634 :
616 :02/05/11 22:28 ID:???
とりあえずオフラインでも動くようにしてみます。ありがとでした。
635 :
nobodyさん :02/05/12 00:32 ID:Kq9I9f0M
perlで指定した文字数でランダムな英数字の文字列を生成するには どうすればいいのでしょうか? おしえてください。
>>635 範囲を決めてrand()とchr()で。
最近教えてスレッドとか改造スレッドみたい、ここ。 6文字で。 my @word = (0..9,'a'..'z','A'..'Z'); my $rand = ''; $rand .= $word[int rand @word] for (1..6);
教えて!!!!!
641 :
パルお :02/05/12 01:40 ID:eZiXZjwU
LPWモジュールでクッキーを受け取るにはどういう風に記述すればいいのでしょうか?
chr に 2byte 以上与えた場合の戻り値の規則を知りたいのですが、 my $num = shift; print "$num => ", unpack("C*", chr($num)), "\n"; 255 => 255 256 => 196128 257 => 196129 なんでこうなるの?
644 :
nobodyさん :02/05/12 14:08 ID:9L9P3cqp
Perlのスクリプトが動かないのです。 use Any〜でのデータベース使用の準備の後、 dbmopen〜|die〜; tie〜|die〜; の両方が死にます。 WindowsMeではパーミッション666のDBMデータベース使えないのでしょうか? それともPerl5を入れれば改善されるのでしょうか? 激しく既出だとは思うのですが…
>>644 がいしゅつ以前の問題だろ…。
何でも良いからマニュアルの演算子の項を見れ。
ちなみに、それだとあらゆるプラットフォームで確実に死ぬ。
646 :
645 :02/05/12 14:59 ID:???
つーかPerl4なのか。 それならそもそもuseをした時点で死ぬだろ。
647 :
nobodyさん :02/05/12 16:08 ID:4Ko6xKbI
windows2000Pro.+apacheでCGIを組んでいるのですが、腕の未熟もあって たまに無限ループを作ってしまうことがあります。 その時にPerl.exeを強制終了させたいのですが、タスクマネージャから落とそうとすると アクセスが拒否されて落とす事が出来ません。 再起動すれば問題無いのですが、煩雑ですし、Perl.exeが走ったままで使いつづけるのも怖いので 解決方法があればお教え願いたいです。
648 :
644 :02/05/12 16:26 ID:???
>>645 すみません。|演算子は||の書き込みミスです。
Perlは5かもしれません。よく分かりません。
一応、がんばって自力で途中まで調べました…。
use DB_File;
はどうなんでしょう?とりあえず帰ったら試してみます。
これでだめだったらどうしよう…。
>>648 ハァ…自分が何やってるのかもわからないヤシに何かを教えることは出来ません。
650 :
664 :02/05/12 16:46 ID:???
>>649 何をやっているか…標準クラスモジュールのスコープを使用可能にしているのでは?
Perlは5でした。結局、tieが通らないのが問題だと思います。
Perl附属データベースを優先的に使用するように指定できれば良いのでは…
と思ってはいるのですが…やりかたが…
>650 やっぱり何やってるかわかってないじゃん。 つーか、「〜すれば良いのでは?」と思うなら勝手にそうしてください。 やり方がわからないならGoogleってください。 ここはあなたに相槌を打つスレじゃないので。
携帯でgoogleか…鬱だ…
駱駝本と格闘して自己解決しました。GDBM_Fileとtieの組み合わせで成功。他の方法で失敗する原因は後で考えますです。
>>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
どうでもいい事だとは思うけど、コーディングしてて山の様にあっちこっちに 動的変数作ってしまって、プログラム終了まで使われなくなった変数って やっぱシステムリソース喰ったままなんですかね? 「もう、この変数は使わない〜」と思ったら、undef した方がいいの? それとも、コンパイラが適当に判断してくれたりするんだろうか? $a = "(・v・)"; $b = 12345; { # ここで $a と $b 使う。これ以降は使用されない } { # 新たに変数 $c を割り当てる。しかし、$a $b が使われていないので # $a $b 用の領域を使って確保される?(暗黙の undef とか?…) $c = "( ゚д゚)"; }
素人のものすごい素朴な質問なんですけども、 -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. というエラーは消えてくれません。 動作にはまったくこれといって支障ないですけど、なんとなく気になってた疑問なのでちょっと聞いてみました。
>>656 理由はメッセージに書いてあるじゃないか。変数は初期化しろ。
とわいえ、俺もこのwarningはウザイと思う場合もある。そん時はno warnings;〜;use warnings;ではさむ。
>>655 myしる。そうすればブロック抜けた時に消える。
{
my $c = '( ゚д゚)';
# 〜$cを使う処理〜
}
659 :
nobodyさん :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 になってしまうので宜しくお願いします。
>>659 何がしたいのか分からないのでこの答えが妥当かどうかはわかりませんが
$patch = `diff file1 file2`;
661 :
656 :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 〜];というふうにあらかじめ書いてるんでが。
ヒアドキュメントになにか決まりごとでもあるんでしょうか?
>>661 宣言と初期化は違う。
宣言しただけだと変数の中身はundefだから、そんな感じで怒られる。
初期化(空文字列を代入するとか)をしておけばエラーは出なくなる。
663 :
656 :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.は
やっぱり意味の無いエラーなんでしょうか。
664 :
nobodyさん :02/05/13 22:56 ID:S5I/8Zh9
perlでオラクルを使ってDBIのモジュールをインストして使ってます。 selectall_arryとかで値を抜き出す時に使う変数が理解不能です。 $@hogehoge とか $$_[1] って奴です 一応$_[1]とかは解りますが$@を会わせたり$$でjobid以外の使い方が今いち理解できません。
>>663 んな事はない。どれかの変数の初期化を忘れているだけだ。
目を皿にして良〜く見ろ。
>>660 ありがとうございました。以下で解決しました。
$patch = `diff file1 file2`;
open (FH, ">patch.diff");
print qq|$patch|;
print FH qq|$patch|;
>>663 途中で変数にundefが代入されたんだろう。
試しにprint文の直前でprintに関わる全ての変数に対して defined $z or $z = ''; してみれ。
669 :
nobodyさん :02/05/14 00:14 ID:ZpKcImQq
古くなった掲示板の投稿を次々とHTMLページにして過去ログを作成する掲示板がありますが、 1ディレクトリ内のファイル数が多くなるとアクセスが重くなったり、サーバーに問題が起きたりするのでしょうか。 サーバーはファイルにアクセスするときに1ディレクトリずつ辿っていくとするなら遅くなりそうですが。 5000ファイルとかでも大丈夫でしょうか。
Perl5で掲示板CGIを作っているのですが、CGIの”重さ”ってどうやって調べればよいのでしょうか。 WinソフトならCPU使用率のグラフでも見ればいいんですが、サーバ上となると。 CGIスレで聞こうと思ったんですが、言語に依存しそうなのでこちらでよろしいですか?
671 :
nobodyさん :02/05/14 00:26 ID:i98930LO
よく見るとsageだったスマソ
672 :
nobodyさん :02/05/14 00:39 ID:o5LDH6aT
>>670 -d:DProf とか。
CGIなら
#!/usr/bin/perl -d:DProf
とかで。
673 :
670 :02/05/14 00:55 ID:???
あの…それってなんのオプションですか?(今調べてますが) CGIのほうではエラーで起動できず、DOSプロンプト(WinME+Apache)のほうではなにも表示せず終了なのですが。
674 :
670 :02/05/14 01:04 ID:???
あ、なんか出てきた。 ありがとうございましたm(_ _)m …と言っても、そんなファイルは見つからない〜のw。
>>658 Perl内部ではメモリ開放されるだろうけど、OSには返されないだろ、
ってクックブックに書いて有ったきがする。つ〜わけで、システム
リソースは喰ったまま。スクリプトが終了した時点で全て回収
される。
ただmyを使用すれば、新たな変数宣言時に跡地が有効利用されて、
全体としてメモリ使用量が減る、ってことになるんですかね。
676 :
656 :02/05/14 02:11 ID:???
>>665 >>668 どうもです。
とりあえずそれをやってみます。
undefってやっぱりPOSTから分解したときに対応している値が空だとundefが入っちゃうんでしょうか?
***.cgi?a=&b=123だと$a=$FORM{'a'};は中身はundefなのか''空なのかどっちになってるのかよくわかってないです。。
>>676 >POSTから分解したときに対応している値が空
その場合はundefじゃないと思うよ(空)。分からない時は
defined $FORM{'a'} ? print "定義済み〜\n" : print "未定義〜\n";
しちゃえば?
>>672 質問した者では無いんですが、良い事を教わりました。
とりあえず *無意味なエラー* なんてものは存在しないってことを理解しる
>>678 なんか当たり前だがハッとなる言葉だな。
糞ッたれなエラーメッセージは世の中に溢れている。 abnormal termination...
-d:DProf について解説してるサイトないですか?
683 :
nobodyさん :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では動いたんですが、サーバへ送るとエラーになります。
こういうことってできないんでしょうか。
>>683 何をしたいんだかいまいちわからない。
もう少し詳しく書いて。
685 :
:02/05/14 15:57 ID:???
>>685 www.xxx.comって適当に書いたのかと思って行ってみたら、エロサイトだったのでビクーリ
688 :
nobodyさん :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を出力しないようにしたいと思って。
689 :
nobodyさん :02/05/14 18:40 ID:IM/zSuxh
>>688 if( $ENV{'SCRIPT_NAME'} =~ /bbs\.cgi/ ) {
print "Content-type: text/html\n\n";
}
としてみてはどうでしょう。
690 :
688 :02/05/14 22:30 ID:gZX6Mv2h
どうもありがとうございました。 うまく動きました。簡単でしたね(汗)
1行だけのファイルがあったとします、 これを8バイトごとに区切って、 @sort に代入していくにはどうすればいいですか? split 関数では区切り文字がないとダメなので… 区切り文字はなく、とにかく8バイトずつ区切りたいです。 よろしくお願いします
>691 readで一定量づつ読み込んでからunpackで分割
$/ = 8; @sort = <FILEHANDLE>; これでもいけなかったけ。確かめてないけど。 # バージョンが低いとだめっぽいが
695 :
TO :02/05/15 15:52 ID:+mZA1LnL
早速質問です。 フォームメールを使い会員宛に情報を送るCGIプログラムをテストしています。 PCやJskyでは無事メールは届きますがi-modeには届きません。 自分の携帯だけかなと思い、友人のi-modeに送ってみたが届きません。 ただしOUTLOOKなどのメーラーを使うと送ることは出来ます。 着信拒否の設定も何もしていないのに... 考えられる原因って何かありますか? ※独自ドメインをレンタルサーバーで運用しています。
696 :
:02/05/15 16:30 ID:???
>>695 一部のドメインからの送信が規制されているらしいという話を聞いたことある
697 :
TO :02/05/15 16:40 ID:???
ありがとう。 共有型のレンタルサーバ使用で、 sendmailから送られるメールのMessage-Id:が レンタルサーバ会社名なので、 もしかして他サイトが迷惑メールを送信したために 規制されてるのかな?うーん...
698 :
nobodyさん :02/05/15 22:07 ID:DvGtt9Y8
MLDBMを使ってプログラムが書きたいんですけど、 MLDBMについて詳しく説明しているページや 使い方を教えてください。
>>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>;
701 :
nobodyさん :02/05/15 23:26 ID:hRG/E5t+
foo(%abc); sub foo { my %hash = @_; } って正しい?
Perlの最新版ってどこにあるの?
703 :
nobodyさん :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); }
>>701 正しく動くけど、できればリファレンスで渡したいところ。
>>703 何と言うかメチャクチャだよ。基本から学ぼう。
>>702 CPANでも逝ってくれ。
窓用のActivePerlならactivestate.comへ。
……activestate[s]にして全然違うところへ飛ぶ罠にご注意(w
>>705 ?
別にむちゃくちゃってわけじゃないだろ。
何故こんな質問が出るのか少しばかり謎ではあるが。
>>703 Perl5.6以前ではsort用比較関数は$aと$bを参照しなけりゃならんのよ。
つまり
sort { $a <=> $b } @array;
とするわけだ。
# プロトタイプの設定で@_でも参照できるようにしたのは
# おそらく別パッケージでも簡単に動かせるようにする為だろうね。
ついでに、cmpはPerlの組み込みキーワードなんで
サブルーチンの名前にするのはやめたほうが無難かもしれない。
特に問題なく動いてるようだし、構わないのかもしれないが。
質問、というか添削希望です 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の条件式に問題点はありますか?
房な質問すいません ローカル環境でCGIデバグして、動いていたものがほんちゃん用の 鯖にうpしたらエラーだった… telnetでコマンドライン実行した所、↓のコードがダメだった # 駄目 delete $hoge[ $i ]; # OK delete $hoge{ $i }; 単なるコーディングミスなんだけど、なんでローカルの perl では コンパイル通っていたんでしょうか?
710 :
709 :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ってありますか? 教えて下さい。
tyuubo-だけど言葉ずかいが素敵だから教えたる。 楽勝。
715 :
厨房 :02/05/17 04:17 ID:bHXEkEom
>>714 さん
ご指導ご鞭撻、よろしくお願いします。
716 :
nobodyさん :02/05/17 11:12 ID:kkxtU/zb
初歩で素朴な筆問でスマソ 「文字連結」ってどうやるの? 配列に入れて、joinするのはめんどいけど、 正規表現とかでやり方はないっすか?
>>716 ハァ?何が肢体のかワカラソ。
$catedstr = join "", $str1, $str2;
とか
$catedstr = $str1 . $str2;
のことじゃないよな?
718 :
nobodyさん :02/05/17 15:08 ID:jYg7e4+R
便乗質問です。 文字列の500文字目に"abcde"を入れるには どういたら良いのですか?
720 :
波兵 :02/05/17 16:06 ID:???
>>718 ばっかもーん!それぐらい調べればすくわかることだろうが!!
今度そんな質問したらゲンコツだぞ!!
つーか何の便乗なのか謎。DQN?
>>714 お前の言葉づかいは素敵じゃないな。(藁
723 :
時雨 :02/05/18 22:28 ID:T/2gJeJW
あのぅ・・・掲示板のフラットボタンありますよね?あれってどうやってるんですか?
>>723 掲示板のフラットボタン?こういうことですか?
<input type="submit" value="送信" style="border:solid 1px #000000">
これはスタイルシートつかってます。
Web制作板のCSSスレに載ってるサイト見て勉強してください。
>>723 たぶん平べったく見えるボタンの事だよね。それならスタイルシート。
border: 1px solid silver; とか。板違いなのでWeb製作板へ。
激しくカブタ(w
727 :
nobodyさん :02/05/19 01:22 ID:AQpyLtDP
関数の戻り値を、リファレンス使わずに、ハッシュで返したいんですけど、 sub a { my %hash = (a=>0,b=>1,c=>2) ; return %hash ; } my %myHash = a() ; こんな感じなんですけど、添削してくれませんか、ねた無しで・・・
729 :
727 :02/05/19 01:45 ID:AQpyLtDP
>>728 レスありがとう御座います、確認不足でした。
うまくいけてました。
ここでよく見かける質問で極簡単なソース晒して「結果」を求める質問あるが、 それはCGIの一部でローカルでテストする環境無いヤシが質問しているのか?
731 :
nobodyさん :02/05/19 12:20 ID:fEY33UPf
携帯で画面を自動で移動させるにはどうしたらいいでしょうか?
>>731 君はPerlを宝島か何かのように考えているのかね。
734 :
nobodyさん :02/05/19 16:04 ID:Y5d1n8OF
教えて下さい。 スクリプトを見られないように文字化けさせるやりかたがあるときいたのですが、 変換させる用にマクロメディアかマイクロソフトかで何かを ダウンロードしてこないといけないと裏技の本に書いてあったそうです。 書店に本を探しに行ったのですが見つからず。もしご存じでしたら教えて下さい。
735 :
727 :02/05/19 16:09 ID:???
>>730 自分の事?、
あるよ、Vine Linux2.?と、Slackware8、WinじゃCygwinも
自分の今回の確認ミスは、結果のハッシュ構造の確認をDumoer使っていたため、
リファレンス先のハッシュは問題無く表示されるけど、
直接ハッシュ指定すると正しく表示してくれないみたい、
常識?
736 :
727 :02/05/19 16:11 ID:???
>>734 それは、Javascriptの話じゃない?
CGIの場合は、パーミッションをきちんと設定すれば、
見られる事は無いとおもうけど
=
738 :
734 :02/05/19 18:53 ID:81BFGvHe
>>736 すみません。
おっしゃるとおりJavascriptのことです。
ソースのJavascriptを文字化けさせて、読めなくする方法だとききました。
わかりますでしょうか?
739 :
:02/05/19 19:02 ID:2IiQOx1u
動画アップローダーのスクリプトありませんか? 情報お待ちしてます。
>738 そこまでわかってんならスレ違い,というよりも板違い
741 :
nobodyさん :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が何かに変更されているとかしか考えられません。 そのようなことは起こりうるのでしょうか?
742 :
741 :02/05/19 19:39 ID:F0t0o3W7
今バイナリで調べてみたのですが、 0D0Aが、0A0Aに変わってしまっていました。 でも、 s/\\r/\r\n/ig; してるんですよね。 何でだろう。
743 :
734,738 :02/05/19 20:47 ID:gBCciPdK
>>740 あああ、すみませんでした!
今気付きました!
ここは[Perl]の初心者コーナーだったのですね。
「初心者」という部分しか目に入ってませんでした。
申し訳ありませんでした。
>>741 俺がこれまで見た中で十指に入るひどい日本語だ… 意味不明。
¥¥rって バックスラッシュと小文字の r ってこと? なんでそんなことするのか理解に苦しみます。
746 :
nobodyさん :02/05/19 23:48 ID:688ScNbc
747 :
nobodyさん :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が 効かなかったんですよね。 なんかよい方法はないものかと。 いっぱい間違ってるかもしれませんが、簡潔な方法があればよろしくおねがいします。
>>747 for (@list) {
die 'あほ' unless(/^(\d)/);
push @{"list$1"}, $_;
}
749 :
747 :02/05/20 00:49 ID:dmmb40il
>>748 大変短くして頂いてありがたいのですがエラーがでました。
スミマセン
750 :
:02/05/20 00:55 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";
<>;
752 :
747 :02/05/20 01:00 ID:dmmb40il
いや、なんか配列名に変数をくっつけるみたいな書き方のとこ push @{"list$1"}, $_; ココだけコピって使ったんですけどね
ソケットのことでついての質問です。 #!/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>; これを変数にあてはめて表示するにはどうすれば、、、。
754 :
747 :02/05/20 01:01 ID:???
あ、何か751さんが新しい答えくれてる、ちょっとこれ試してみます。
755 :
747 :02/05/20 01:05 ID:???
うわ、スゲエ、出来た! でもよーわからん、、、 ノートに書き写して後でゆっくり考えてみます。 ありがとう!
747たんは多次元配列知らないのでちゅか?
758 :
741 :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に変わってしまっているようなのです。
何が問題なのでしょうか?
cgiのコンソールってなんでちゅか? s///になんでiを付けてるのでちゅか? デバッ ク ってなんでちゅか? <pre>じゃだめでちゅか? 表示させるために置換したものを、なんで再びファイルに書くのれちゅか?
760 :
あとね :02/05/20 05:36 ID:???
バックスラッシュはエスケープさせないのれちゅか?
>>758 (
>>741 )
呆れるほど突っ込みどころ満載なんだがとりあえず一つ。
binmode(FILEHANDLE)使って見れ。
762 :
とんちんかん :02/05/20 14:27 ID:827vrQS8
Perl を使ってあるWin2kのログ ファイルから必要な情報を別のテキスト ファイルに抽出 してるんですが、ちょっとした理由でこのログ ファイルが Unicode 形式になってしまいまいた。 でこのスクリプトで読み込んでみたら案の定白紙のテキスト ファイルを作ってくれました。 Perl で UCS2 のファイルの読み書きってできるんでしょうか? Jcode.pmとかって使うんですか? 教えて君ですみません。
>762 yes.
すみません。勉強したての超初心者ですが、下の場合どのように書けばいいのでしょうか。 例えば 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]+//; とか正規表現にマッチした部分が格納される変数の名前ってなんでしたっけ?
>>764 もし $A eq $B かつ $A eq $C のとき $Z="あいうえお";
そうじゃなくて $A eq $B かつ $A ne $C のとき $Z="アイウエオ";
そうじゃなくて $A ne $B のとき $Z="123";
それ以外のとき $Z="---";
if && elsif else
>>765 とうとうこんな質問まで出るようになったか・・・。
検索もできないクズはプログラミングなどやるな。
769 :
nobodyさん :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が有効にならなかったり、前回と同じ位置が吐き出されたりと うまくいきません。 指定範囲を別の変数にコピーして、そこから書き出すということを やりたいのですが、どのようにしたらいいでしょうか?
770 :
769 :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 グレシャムの法則というのがあってね以下略
elsif
773 :
771 長瀬 愛 :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 初心者は何がわからないかもわからなくて、検索もできません。
答える気がねーなら、煽ってんじゃねーヴォケが
ここは”一応”初心者スレなんだから。
オレモナー。
775 :
nobodyさん :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を読み込む方法がありますでしょうか?
777 :
nobodyさん :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;
778 :
775 :02/05/21 03:11 ID:iePDZE0b
776さん、777さん ご丁寧なレスありがとうございました。 早速試してみます。m(__)m
(´-`).。oO(
>>775 JavaScript 常時 OFF な人には見えないね…)
780 :
nobodyさん :02/05/21 03:53 ID:1dGqnG5G
質問なんですが、携帯からなので、ログ参照、検索は勘弁願います。 学内BBS作ってるんですが、全員同じプロクシなので、 ほかに手っとり早く個人識別する方法はありますでしょうか。
>>780 (1)全員に固有のIDとパスワードを配布する。
(2)書き込みは係りの人に紙に書いて手渡しにする。
(3)自分だけ書き込み出来るようにすれば、おそらく書き込んだのは君だ。
(4)名前を書かせ、それを信じる。
782 :
775 :02/05/21 04:04 ID:iePDZE0b
>779さん 試して見ましたが、どうやらそのようですね。 ASAHIネットがCGIのβサービスを開始したからCGIの勉強を始めようとしたのですが・・・ うーん、他の人達は一体どのように対応しているのかなぁ??? もう少し調べて見ます。 ご指摘ありがとうございました。
>>782 イメージデータにして<img src="hoge.cgi">すれば?
784 :
nobodyさん :02/05/21 04:11 ID:1dGqnG5G
>>781 うーん、2chのIDみたいなのとかつけたら
面白がると思うんだよね。
5) 300カ国の人間が300人自分の言語で書く。
(´-`).。oO(
>>784 全員同じ串なら、リモホも同じだよね?よって、IDも同じになると思うが?…)
あ、非匿名串とかは別ね
普通のPerlとアクティブパールの違いだってなんですか、 今度IISでPerl使うんですけど、選択に迷ってまして、 どんなもんでしょ?
(´-`).。oO(
>>786 名前が違う…)
ドキュメントぐらい読めよ。ヴァカwin房
788 :
786 :02/05/21 06:34 ID:???
>>788 最近この手のアフォよく見るな。たいした質問内容でもないくせにやたら偉そうだな
↓はい、次の方どうぞ
Perl → 言語名 ActivePerl → 処理系名 ですよ。
>>791 おまえも邪魔だ。いちいちレスするなって。
>>785 だからIP.リモホ以外で個人を識別する方法を…
796 :
794 :02/05/21 14:21 ID:???
>>795 参考にさせて頂きます。
実は結構難しいんですね…。
797 :
とんちんかん :02/05/21 14:30 ID:+ltjKcZF
すいません。 Jcode,pMの実装例がみたいのですが、サンプルどこかにないでしょうか。 けっこうしつこく検索してるんですが。。。 UCS2をよみこむスクリプトつくりたいのdせうが。
サーバの起動状況を見ようと思っています。 最初はSocketを使って、レスポンスが帰ってきたらUpというようにしていましたが、 性質上どうも動作が重いので、代わりにpingで見ようとしましたが、全然資料が無くてよくわかりません。 どなたかご教授願います。
Socketでファイル取得して、保存しようと思うのですが画像ファイルなどがうまく保存できないんです。 普通のテキストファイルはちゃんとできるのですが。 有用なリンクなどがあれば教えていただきたいです。
binmodeってオチですか?
>>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);
binmode(A)だし、<S>に何がかえってくるかコンソールで確認した? ダメすぎです。
804 :
nobodyさん :02/05/21 17:37 ID:Eo1hAg2d
$target =~m/ー/; "ー"は日本語のハイホン これが走らないのですが、ーはできないのですか?
このスレは 【Perl】FAQを敢えて質問するネタ心者コーナー に変更されますた。
>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);
勢ぞろいだな
814 :
nobodyさん :02/05/22 11:42 ID:o5bpVYAL
length($value)のように 配列のサイズを求めたいのですが、length(@arry)や(-s @arry)で取れません。 サイズを求める記述を教えてください。
815 :
nobodyさん :02/05/22 12:29 ID:TrskWj5V
>>814 foreach (@arry){$length = length;}
>>814 配列をスカラーコンテキストで評価すると要素数になります。
my @array = 0..99;
my $c = @array;
print $c;
それともこういうこと?
my @array = 0..99;
my $length = 0;
map { $length += length } @array;
print $length;
どちらにしろまともな参考書を読むのをお勧めします。
817 :
nobodyさん :02/05/22 14:29 ID:FKXAo2H1
$length=$#array_name;
818 :
nobodyさん :02/05/22 14:31 ID:FKXAo2H1
ちなみにハッシュは、 $length=keys %hash_name;
819 :
nobodyさん :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は最新です。 どなかた勘所の解る方、ヒントでも教えていただけませんか。 よろしくお願いいたします。
820 :
nobodyさん :02/05/22 14:35 ID:LbPQIjeD
CGI上で Content-type: text/html\n\n 書いて、HTMLを表示したものを、処理の終わりがけに消して Location: jump_url\n\n したいのだが、どうすればいいのれすか
822 :
nobodyさん :02/05/22 15:16 ID:7BsbRs8K
>>821 言っていることがいまいちわかりません。
参考URLがあったら、教えてくれ。
CGIの中にカウンターを付けたいのですが誰か作って下さい(テキストカウンター) 2重カウント防止のやつね。
>>823 print "僕はカウンターすら作れない厨房です";
826 :
nobodyさん :02/05/22 16:37 ID:JlVHE84P
(・∀・)?
>>820 結果表示用のフレーム(F1)とCGIの進行状況を監視するフレーム(F2)をつくる。
F1にはCGIの出力を垂れ流す。(長時間無出力でタイムアウトしないように注意)
F2ではCGIの状況を監視する監視用CGIを実行する。
監視用CGIは処理が完了するまでrefreshでループする、完了したらWindow全体をどっかに飛ばす。
828 :
nobodyさん :02/05/22 17:24 ID:B5h8aDro
携帯で「Location」が出来ないんですけど、何故でしょうか? PCなら飛ぶんですが。。。
829 :
nobodyさん :02/05/22 17:29 ID:T+IRZr/d
>828 仕様です。
830 :
:02/05/22 17:30 ID:???
>>828 Locationヘッダを絶対パスじゃなく相対パスで指定してるとか?
831 :
nobodyさん :02/05/22 17:43 ID:B5h8aDro
>>830 絶対パスで指定しています。
cgiにジャンプしてるんですが、できないんでしょうか?
833 :
nobodyさん :02/05/22 18:23 ID:a/hkqU17
あのー.............カウンター..................お願いします
>833 > いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。 > >1:自分はこう言う事がしたい。 >2:それでこんな風にやってみたが・・・ >3:それだとこんなエラーが出て上手く行かなかった。 > >1と3が無いと誰も答えられないよ、良い回答は良い質問から。 >一緒に勉強しましょう。
最近はこのスレにぎやかだな。燃料が湧き出る湧き出る・・・
836 :
nobodyさん :02/05/22 18:59 ID:dip8mLbF
くだらん質問よろしいですか。 2ch掲示板のID付与機能は、何を見てなされているのでしょうか。 環境変数でしょうか。 cookieでしょうか。 よろしくお願いします。
838 :
836 :02/05/22 19:08 ID:dip8mLbF
ありがとうございます!
839 :
nobodyさん :02/05/23 00:03 ID:wU66PY4j
フォームの最大文字数の設定なんですがこれだとエラーが出ます。 if (length($data{'coment'}) > 500){print 'コメントが長すぎます。' }else{ 構文チェックではOKが出るんですが、どこが間違ってるんでしょうか?
>>817 要素数なら、
$length = $#array_name + 1;
で、ないか。
>>839 >これだとエラーが出ます。
エラーの内容を書けない理由でもあるんでしょうか?
>フォームの
↓ ヘッダ(Content-type)出力してますか?
>print 'コメントが長すぎます。'
>>841 例によってコマンドラインでなくてHTTP500のエラーなんだろう・・・
・ ・ ・ ヽ(´ー`)ノ ・ ・ ・
htmlから<a href>のタグで指定されているURLを抜き出したく $strtmp = htmlテキスト の条件で $strtmp =~ /<a*href=(\w+)>/i; print "URL = $&\n"; のように指定しておりますが、$&が返ってきません ($1にしても同様でした) なるべくシンプルな形で改善方法およびもっと良い方法があれば ご教授いただけますでしょうか。
>844 ×a*href ○a.+?href
846 :
844 :02/05/23 17:00 ID:???
>>845 ありがとうございます。
どうしようもないとこまちがってました。
ただ、直してもやはり結果が
URL =
と何も出てきません。なぜなのでしょう??
847 :
nobodyさん :02/05/23 17:10 ID:yzRVE+W0
はじめまして。 えっとperlの関数でエクセルのMAXやMINと同じ働きをするのはないの でしょうか? やりたいことは、 ある配列リストの中で、一番大きな数字と一番小さな数字を抜き出したい んです。 例えば @AA = (1, 0, 5, 13, 8, 0, 4,); となっていたときに、最小の0と最大の13を抜き出して、それぞれを別々の スカラー変数に入れるようにするにはどうしたらいいのでしょうか? (@AAの中に入る数字は、整数だけです。また@AAの中身は別の計算で出た答え を順番にならべたものなので、可変します) よろしくおねがいします。
>>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;
>846 \wは正規表現でなにを意味するかをよく考える。 そしてURLに使われる文字列に必ず入るはずのものを考える。 ://
(´-`).。oO(
>>844 質問の前に
>>3 の perl メモぐらい読めよ…)
851 :
847です :02/05/23 18:24 ID:ETJF2qc1
>848さん すごい!素早い回答ありがとうございます。 そうか、sort使えば出来ますね。関数ばかりを探していたので、気がつか なかったです。 ありがとうございました。
852 :
nobodyさん :02/05/23 19:27 ID:9GY0TqYi
PerlはラリーがNSA勤務時代に「大量の文字列処理」をこなすために開発しましたが、ラリーがなぜNSAで「大量の文字列処理」などをしなければならなかったのか、誰か知りませんか?
853 :
nobodyさん :02/05/24 01:20 ID:T4wzQrMy
多次元配列のソートで悩んでいます。 教えて下さい。 @array の中は $array[a][b][c][d]... と言う感じになっていて、 aの部分や、bの部分など条件を変えてソートが出来るようにしたいのですが どうゆう方法でやるのが一般的なのでしょうか? sort関数は使えなそうなので、自分で作るしかないんでしょうか。
>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
>>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;
>>854 構文チェックだけ。
>$mytitle ep ''
↑ 4個所ほど ↓ 3個所くらい(関係無いけど、なんでbmp?)
>$myurl = "<<a href=$myurl><img src="home.bmp"></a>>"
↓ FOOTの後ろにオマケが。
>FOOT
858 :
854 :02/05/24 04:31 ID:???
>>855 >>857 掲示板が表示されるようになりました
が、書き込みのところがおかしいみたいなのでまだ調整が必要なようです。
調整はひとまず寝てからにします。どうもありがとうございました。
相対パスでかかれたのを
http:// 〜 の形に直すにはどうすればよいのでしょうか?
んっと・・・ &boo( @foo ); sub boo { パラメーターとして連想配列が 渡ってくるんだけど、 どうやって参照するのか解らないっ! foreach $k ( keys @_ ) { print "$k = $_{$k}\n"; } なんか、違う・・・気が・・・する・・・ }
中身のあるディレクトリを削除する関数ってないのでしょうか?
>>860 貴方は@fooを連想配列だと思っているのか、
それともデリファレンスの方法がわからないのにリファレンスを使おうとしているのか、
どっちですか。
>>861 File::Pathのrmtree
#!perl
use File::Spec;
rmtree [ '/', @other_path ], $is_verbose, $is_safe;
スタイルシートを切り替えるcgiを cgiの中に組み込みたいのですがどうやったらいいでしょうか
>>863 print "Content-type: text/css\n\n";
あとはご自由に
865 :
nobodyさん :02/05/24 12:16 ID:RsaAAUuO
SSLについて質問です。 SSLサーバー内のCGIからSendmailを使ってメール送信する場合 その内容は暗号化されるのでしょうか? 具体的には、アンケートフォームを、セキュアディレクトリ内で動かして その内容をメールで送信したいのですが・・・・
>>865 それは無理。SSLは、クライアントとWebサーバ間の暗号化だけ。
PGPを使えばメール本文は暗号化できるかな!?
867 :
nobodyさん :02/05/24 12:54 ID:RsaAAUuO
ということはネット通販とかで「当店はSSLを使ってるから安全です」 とかうたっておきながら注文内容がそのままメールで来るのって、 ぜんぜん意味が無いってこと?
近くに本屋がなくて本買えません・・・。 インターネット上で勉強していたんですが、=~の意味がイマイチ分かりません。 誰か教えてください・・・。こんな初歩的な質問をしてスミマセン。
869 :
nobodyさん :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>"; どうしてなんでしょう?
>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 ありがとうございます。
天才ですね
873 :
nobodyさん :02/05/24 14:12 ID:kdQeUGzg
1つのソースに複数のcookieを使うとか出来ないですか? cookie自体に名前付けるとか。 2時間弱ネットさまよってますけど、見つかんないんです…。
>873 もうちょっとわかりやすく。 多分できる。
875 :
nobodyさん :02/05/24 14:36 ID:lhjaJYwp
aspの質問はどこでしたらいいのでしょう…
876 :
nobodyさん :02/05/24 14:38 ID:kdQeUGzg
えっと、日付と時間秒数により乱数を発生させ、 日付が今日と同じなら同じものを表示したいんですが、 その日付と時間秒数が、名前やメールを変えると、 一緒に同じ日付でも更新されてしまいます。
878 :
nobodyさん :02/05/24 14:42 ID:kdQeUGzg
うぁい、すいません。 もうちょっと自分でがんばってみます(鬱
879 :
nobodyさん :02/05/24 16:07 ID:ftO6wAMU
SSIがうまく行きません。 拡張子は.shtmlで <!-- #include virtual="./aaa.cgi" --> と記述しています。 cgiを直接起動させると正しく出力しています。 パーミッションもいろいろと試してみました。 どのような対処が考えられますでしょうか? ちなみにサーバはGMOのサーバで試してます。 ローカルではうまく動いているのですが・・・。
>>868 >>1 > いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。
>
> 1:自分はこう言う事がしたい。
> 2:それでこんな風にやってみたが・・・
> 3:それだとこんなエラーが出て上手く行かなかった。
遠くの本屋で本を買え。
881 :
:02/05/24 16:53 ID:???
>>879 virtualで読み込むSSIが直接起動で正しく出力?
Content-type: text/htmlヘッダしか吐かないはずなのに
正しく表示されるほうがおかしくないかい?
882 :
nobodyさん :02/05/24 17:22 ID:ftO6wAMU
>>881 shtmlファイル上にCGIで出力されたテキストをのせたいので、
<table>
〜
</table>
までを出力させてます。
ブラウザでCGIを直接起動すると
タグには<table>〜</table>までちゃんと出力されてました。
shtmlから起動すると
<!-- #include virtual="./aaa.cgi" --> これがそのまま書かれているだけです。
なにか根本的に間違ってたりするのでしょうか・・・。
>>867 クレジットカード番号がメールに書かれていたら問題だけど、
商品名や自分の名前くらいなら別にいいんじゃない?
それすらイヤならそもそもメール使えないし。
884 :
:02/05/24 17:45 ID:???
>>882 ローカルでうまく動いてるって、ローカルサーバではなくその事?
目的のサーバでSSIのvirtualが使えるのならCGIに問題あるとしか
考えられないけど。
いずれにしてもソースを見なければ。
誰か
>>859 にも答えてください・・・。お願いします。。。
>>885 あんたの提示した情報からじゃ、無理としかいえんな。
答えて欲しければ何がしたいのか、どういう状況なのか詳細に書いてくれ。
>885 環境変数を色々使えばできるとは思うが、情報不足で答えられん。 環境変数も鯖によっては取得できなかったりもするし。
>885
全自動でやることを考えるよりも、
$local_path = '..';
$full_path = 'h
ttp:// 〜〜/cgi-bin';
$path =~ s/$local_path/$full_path/;
と手入力でやった方が簡単だぞ。
スクリプトを配布するなら別だが、それだと環境変数でのやり方は鯖によって
可不可が変わるから難しいと言っておく。
889 :
885 :02/05/24 18:57 ID:???
そうですね。自分が書いた情報だけじゃ何言ってるかさえわからないですね。。
えっと、Socket使って他サーバーにあるHTML読み込んでそこにあるタグから
アドレスを抜き取ってファイルをダウンロードしてみようとか考えて、
http:// 〜の形式のアドレスではできたのですが、相対パスはいろいろ考えてみたのですが
よくわからないので相談してみたんです。
>889 ソケットを使うって事はその基点となるURLはわかってるわけだろ? だとしたら、そこから「../があったらURLを削る」、「./だったら同じフォルダ」で URL変換を入れればいいだけじゃないのか?
>>889 ・HTML読む
・<base>, <meta http-equiv="base">があったらそれ、無い場合はリクエストからベースURLをつくる。
・相対パスだったら連結する。.や..はhttpサーバがよきにはからってくれる。
892 :
nobodyさん :02/05/24 22:32 ID:ftO6wAMU
>>884 ローカルサーバではうまくいってます。
借りてる鯖の説明にはSSIは使えるとかいてありますが、
普通のhtmlファイルやテキストファイルをインクルードしても全く反応しません。
本当にSSI使えるのかな・・・・。
>>892 <!-- #include virtual="./aaa.cgi" --> を
<!--#include virtual="./aaa.cgi"--> にしたら動いたりしてな
>>892 もう一度よく鯖の説明見て見たら?
ssi 使えても、そのssiの一部のコマンドをマスクしたりできるからね
俺には
>>894 が何を言っていて何に対するレスなのかがわからないが…
もし配列のデリファレンスが判らないのならば、
@{$array[0][0]}のように、@{}の中にリファレンスを書けばいいだろう。
File::Pathのrmtreeがわからないなら実際にドキュメント読んでまず試せ。
Storable ver2.0 をインストールしようとしたら、Test::Moreが ネエYOとWarningが出た。CPANへ探しに行ったが見あたらん。 何ですのコレ。make test に問題が出るだけで、そのまま使え そうな気もしますが。
おお、こんな夜中に速レスが付くとは。サーチすればヨカッタ んやね。一生懸命、目で探してますた。ありがd
つーか、なんでperl -eshell -MCPANつかってないんやねん。
901 :
nobodyさん :02/05/25 07:46 ID:/kHlEeLM
本体スクリプトでuse strictしている場合、requireした サブルーチン内からmain内でmy宣言した変数を 参照するにはどうすれば良いのでしょう。 引数で参照渡しするしかない・・・? それとも、これってmy宣言の意味わかってない・・・?
>>901 >引数で参照渡しするしかない・・・?
>それとも、これってmy宣言の意味わかってない・・・?
その通り。my 宣言されたもんはlocal変数だと思ってください
903 :
nobodyさん :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で新しいウィンドウを開き..」の部分は変更不可です。
どうか皆さんの知恵をお貸し下さい。
>903 無理。
906 :
903 :02/05/25 10:33 ID:XVu0yEmF
>905 PerlCGI側の操作でもなんとかならないかなと思ったんです。 一旦新しいウィンドウを開いておいてから 移動とかどうとか・・・駄目ですか? では、アプローチを変えます。 903の挙動が何故問題になるかというと、 cookieが複数になってしまうからなんです。 これを統一しようと思ったらどうすればよいのでしょう? なにとぞ・・・
>>906 perl以前の問題。
CGIで〜〜な事がしたい。perlではどうするのでしょう? なら話はわかるが。
〜〜のところをはっきりさせてから出直しな。
use strictした時に、while(<HOGE>) とかで取り出す変数をそのループの外で使う場合 はどうすれば良いですか?
ループの外で変数を宣言する。
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
>>910 拡張子って何?ファイル名の接尾語の事?
913 :
910 :02/05/25 18:08 ID:???
>>912 拡張子ってファイル名がhoge.jpgだったらjpgのことを指すものだと認識してますけど
どこかちがうのでしょうか・・・?
914 :
:02/05/25 19:20 ID:???
>>911 とりあえずスレ違い。DQN逝ってよし!
916 :
お願いします :02/05/26 02:39 ID:WlbJvt44
フォームの改行文字だけを取り除くにはどうすればいいですか?
917 :
nobodyさん :02/05/26 02:45 ID:cGfFiopg
>>916 $hoge =~ s/[\r\n]|\r|\n//g;
う〜ん、美しくない。
>>916 tr/\x0D\x0A//d;
というかPerlメモ
CGIをダウンロードしてきてアクセス権など変更したのですが 表示されません。ちなみにniftyです。niftyは少し特殊だと 聞いたのですが、どこのスレで聞けばいいでしょうか? とりあえず上の方に初心者というのがあるこのスレで 聞いてみました。よろしくお願いします。 初心者ですんません。
921 :
916 :02/05/26 03:28 ID:WlbJvt44
922 :
nobodyさん :02/05/26 16:46 ID:CiF8CZ1Z
ネプのオールナイトニッポン放送のHP開くと画面が止まって電源切んなきゃなんないんです。 前はそんなことなかったんですけど、どうしたら普通に開けますか?
もうかけないの?
と思ったら書けるから偽ストッパーだし… 923と924はいったいなんなんだ〜? 2chがハクされてるの?
927 :
lo; :02/05/26 20:22 ID:???
>925-926 ちょっとしたことをするだけでできるよ
古いネタに今ごろ気付いてやってる恥ずかしい奴。
のほほ
古いネタだったのか・・・ 知らなかった
( ´,_ゝ`)プッ
iアプリってjaveで出来てんだね。 今日気がついた。
jave?javaでしょ?(プ
という煽りレスの一つでもつけようとしたが、もしかしたら俺が知らないだけかもしれない、
と思って、ひとまず検索することにした。
するとどうだ、javeは存在するではないか。
http://www.jave.de/ あぶないあぶない。無知を晒す所だった。
俺もこのソフトでいっちょiアプリでも作ってみるか。
937 :
nobodyさん :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{
チルダの位置がおかしい。
939 :
nobodyさん :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> なんてお茶を濁しています
>>939 何がしたいのか分からん。
宣言をしていない変数を参照すれば空白であってしかるべきだと思うのだが。
お茶の濁し方も意味不明。それじゃどうやっても空文字列にしかならんだろ。
Carpなどの出力を文字列して取り込みたいんですけど、 (標準、エラー出力を文字列かしたいって事っす) 「うまい」方法教えてください。 「よろしく、おながいします」
>「よろしく、おながいします」 悪い。ネタの相手してる暇はねぇんだわ。
943 :
942 :02/05/27 22:49 ID:vs9qORcp
>>942 教える気ねぇ〜なら、すっこんでおつぅ〜の、わかったか?
質問です。 悪質な質問->DQN逝ってよし!->スキルねぇやつはすっこんでろ! この三連コンボはジエンですか?
>>939 > 何も出力されなくなるんです。
STDERR にエラー吐き出されるんで、httpdのエラーログ見なよ。
本題は、ドキュメントを良く読んで、new で die_on_bad_params => 0 しる。
で、エラー無視するハズだがなあ。俺はやったこと無いけど、
デバッグする時なんかは、簡単にコメントにしてるな。
$template->param(
HOME => $ENV{HOME},
PATH => $ENV{PATH},
#BOOL => $fuga
);
948 :
942 :02/05/28 00:12 ID:???
だからさ、教える気の無い奴つぁ〜、すっこんでおろっての、 ひきつづき、「よろしくおながいします。」
949 :
937 :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{
うれしいとき〜 正規表現でかわいい顔が出た時〜
>949 まずは正規表現の書き方から覚えよう。 if ($ENV{'HTTP_USER_AGENT'} ne ~ /DoCoMo/) { だと if ($ENV{'HTTP_USER_AGENT'} ne ($_ =~ /DoCoMo/) ) { になるんじゃないかな? まず一致する事はないね。
>>952 正規表現の書き方はおかしくねえだろ。おかしいのは、パターン
結合演算子の書き方。つか、キミ自身が正規表現とは何たるかを
勉強した方が良いとちゃう?
>>954 そのリンク先のパターン結合演算子の説明おかしくないか?
俺の知らない、Perl得意の省略形かと一瞬思っっちまったが。
なんで=と!の単項やねん?もっと、まともなサイトを探すのが吉。
>955 鵜呑みにするところだった… グーグル様で検索して最初にひっかかった物だからつい…
(´-`).。oO(
>>952 プッ…)
if ( $ENV{'HTTP_USER_AGENT'} !~ /DoCoMo/ ) {
print "DoCoMo 逝ってヨシ!\n";
}
960 :
nobodyさん :02/05/28 09:05 ID:5/swSF0d
超初歩的な質問で申し訳ありません。。 READで読んできた文字列データ(50kくらい)に含まれる特定の文字列(複数個)を 検索しようとしているのですが、うまく行きません・・。 if(VALUE =~ /PATTERN/){ だと一度に1つしか検索できないし while(VALUE =~ /PATTERN/){ だと同じ部分でmatchしつづけてします。。
>960 検索した後どうしたいかにもよるが。 VALUE =~ /PATTERN/g;
962 :
960 :02/05/28 09:41 ID:???
>961 ありがとうござます。自分の持ってるperl初心者本に詳しく書いて無かった事もあり、 optionについて勉強不足でした。助かりました。
余談だが、 $str ne ~ /pattern/ これは $str ne ($_ =~ /pattern/) じゃなくて $str ne ~ ($_ =~ /pattern/) だろ。誰か気付けよ。
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・・・と言うような結果になりますよね? 二つの配列の内容を同時に一回ずつ表記する方法はないものでしょうか?
追記:結果的に1-a 2-b 3-c 4-dという形になれば問題ないと思います。 よろしくお願いします。
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
>967 前日の日付の求め方を聞きたいのかな? それならlocaltime(time-24*3600);で出せばいいだけだけど。 でも、そんな事をするくらいなら、ログファイルの中に日付だけのデータを作った方が楽だと思う。
969 :
だめぽ :02/05/28 18:22 ID:???
>>968 ありがとうございます。
>localtime(time-24*3600);
これでできそうな感じがするので、やてみます。m(_ _)m
そろそろ次スレ立てないとやばいぞ。
971 :
nobodyさん :02/05/28 22:53 ID:IYnV1U6d
整数かどうかを判定するにはどうすればいいでしょうか?
>971 if($a == int($a)){
>>968 >>967 は 2002/05/28(火) 18:00 ←こんな書式の日時文字列を
time とかで返される様な値に変換したいのカナ?
at-works の access log のログファイルみたいだ…
俺、これ改造して普通に time 値が返すような値を
カキコするように改造したが…
974 :
811 :02/05/29 19:35 ID:???
parlでwinのAPIって使えるんですか? ウインドウのタイトルを取得したいんですが。 CGIじゃなくてローカルで使います。
aaa<>1 bbb<>2 ccc<>3 これを 2番目の数が多い順にソートしたいんですが、 どうすればいいのでしょう?
976 :
nobodyさん :02/05/29 23:44 ID:BqVeUZ/K
978 :
976 :02/05/29 23:52 ID:BqVeUZ/K
補足。 今はDB_File.pmを使う時にだけtieを使ってます。 例えばFETCHメソッドはtieで関連付けた変数から値を取り出す時に自動的に呼ばれる、 というのは判るんですが、それがどういう利点を持つのかが判りません。
979 :
976 :02/05/29 23:53 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も同じ。本当はハッシュじゃないんだけどハッシュをアクセス
する時に裏側でフラットファイルデータベースのレコードにアクセスしてる
わけや。
981 :
nobodyさん :02/05/30 01:04 ID:z8tD+2yU
>>974 parlってナニ?
perlなら知ってるけど…
クソレスでスマソ(゚∀゚)!!!!
982 :
nobodyさん :02/05/30 02:14 ID:9bTblmUw
1000間近にすみません。 globで返ってくるファイルのリストは、必ず順ソートされているものなのでしょうか? ズブ初心者で申し訳ないす。
>>980 詳しい説明ありがとうございます。
なんとなく掴めました。
984 :
:02/05/30 04:15 ID:rYtvxDAS
HTTPのヘッダの Keep-Alive: timeout=?? の??の部分はタイムアウトまでの秒数を表しているのは分かりますが、このタイム をカウントし始めるのは何時なのでしょうか。ヘッダーを受け取った瞬間からなの か、全てのデータを受信し終わった瞬間からなのか…ご教示お願いします。
986 :
984 :02/05/30 04:32 ID:rYtvxDAS
>>985 まぁまぁ。単発スレ立てられるよりいいのでは?
どうせ、もう落ちる訳ですし
>>984 Content-lengthを踏まえて推察するに、ヘッダ受信終了時では?
もっとも、C・S共々対応していないと話しになりませんが(w
>>988 いや、問題はCGIではなくHTTP1.1かと
>>984 ドキュメント全部読んでからのはずだが、このくらい自分で実験しろよ。
ヘッダ書き出した後CGIをrefreshまで終了させなきゃ出来るだろ。
992 :
:02/05/30 10:57 ID:???
このスレ、また次を立てるの?
CGIでj-phoneの絵文字を表示させたいのですが print "$E$\n"; では、やっぱり表示されませんでした。 何か良い方法ありませんか?
996 :
278 :02/05/30 17:28 ID:???
今更だけど、
>>278 はもうちょい効率良くできた。
$tag_regex_ = q{[^"'<>]*(?:"[^"]*"[^"'<>]*|'[^']*'[^"'<>]*)*(?:>|(?=<)|$(?!\n))};
$str = join '',
map { /^</ ? map { /["']$/ ? $_ : lc } split /(["'])(.*?\1)/s : $_ }
split /(<$tag_regex_)/o, $str;
997
放置されてるのね・・・。
もほー
/ ̄ ̄ ̄ ̄ ̄ ∧ ∧ <1000です。 ( ゚Д゚ ) \_____  ̄ ̄Ψ ̄ (つ_つ_____  ̄ ̄□∇ ̄\|オツカレサマ...| \  ̄ ========= \
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。