1 :
nobodyさん :
02/07/18 16:34 ID:jemWJhH3
2 :
nobodyさん :02/07/18 16:34 ID:jemWJhH3
3 :
nobodyさん :02/07/18 16:34 ID:jemWJhH3
4 :
nobodyさん :02/07/18 16:35 ID:jemWJhH3
6get
もういいのかな? とりあえず乙彼
あー、そっか。終わったらそう書くべきだったね、ゴメン。
削除依頼提出済み ==終了==
11 :
nobodyさん :02/07/18 17:24 ID:AnxO1cAd
foreachがわからなくて卒業できませんでした。 はぁ〜。/Д`)
記念カキコ
パターンマッチがうまくいってないです。 同じ文法でデータベースを変えるとちゃんと走りやがります。 つらいです。
14 :
nobodyさん :02/07/18 20:51 ID:s7bVAL5C
質問 フレーム形式のホームページで 2個のフレームのうちの一つに画像型CGIを埋め込む。 正しいreferereを取りたいんだがどうしたらいいですか? envだとフレームのURLを、javascriptの手法を使用しても フレームの呼び出し元のindexのURLをもってきてしまう。 indexにはjavascriptが使えないみたい。
document.referrer の代わりに parent.document.referrer を使う。 jsね。
超初歩的な質問ですが、 Perlでコメントを書く場合に # 【注意】****** の様にコメント行に【】や ●▲ などの記号類を使っても問題無いでしょうか? 記号を使う目的は、後から自分が見て見やすくするというだけの理由ですが・・・。
# 以降その行はコメントです。たとえバイナリデータが含まれていようと、
>>17 じゃあ使っていいわけですね。勉強になりました。
15> ありがと
>>17 試せばわかることまで教えない。
初心者つぶしですか?
変数に入れる内容を "" でくくる場合と、'' でくくる場合はどういう違いが有りますか? 例えば、 $hoge = '<img src="hoge.jpg">'; $hoge = "<img src=\"hoge.jpg\">"; に違いはあるんでしょうか?
全く無い! 気分で使い分けるのがツウ
>>23 さんきゅ
あと聞き忘れましたが、変数に数字を入れる場合、
""で囲む場合と、何も囲まずにダイレクトに入れている場合が有りますが
その違いはありますか?
例えば
$hoge = "10";
$hoge = 10; の様に
25 :
うひ! :02/07/19 03:21 ID:???
>>24 礼は良いからPERLDOC読めよん
気分っつーか " は変数展開される
print 'このビールは$5です';
print "このビールは$5です";
下はあなたの思った動作をしないはず
$hoge = 10はどっちでも良い
"10"なら文字列として10なら整数型として
その時々に都合良く解釈してくれる
>>25 そうだ、変数展開だった。
何かが違うと聞いてた覚えがあったんですけど思い出せなかった。
PERLDOC?
28 :
パイの魅学園 :02/07/19 03:41 ID:Yx4p6kT0
こんな風にしてもフォームからPOSTで送られたデータの取得はできるの? %hash = &form; sub form{ read STDIN, $form, $ENV{CONTENT_LENGTH}; @datas = split /[&;=]/, $form; return(@datas); }
わーいsleepy jaguarさんだ! 数字のソートはsort関数でできるんですか?
>>33 数字だろうが数値だろうがオブジェクトだろうがソートできるよ。
35 :
nobodyさん :02/07/19 10:02 ID:zrmmynPy
Perl5.8.0キタ━━━━━━━━━(・∀・)━━━━━━━━━!?
36 :
nobodyさん :02/07/19 12:20 ID:3YmVGYTQ
「あわわ◆JAPH9PWAたん34GETおめでたですゥ〜\(^o^)/(核爆)」 (・∀・)ウセロ!!
>31 なんでCGI.pmを使わないのかと小一時間問いつめたいのですが、 よろしいでしょうか。
>>37 なにを使う使わないというのは個人の自由だからオマエ程度が問い詰めることでもないだろ。
39 :
nobodyさん :02/07/19 13:34 ID:IEMDM0Nu
初歩的なこと教えて欲しいのですが if(条件式){ test1.cgi実行 } else{ test2.cgi実行 } 上のように、条件分岐してcgiを実行したいのですが、どうすればよいのでしょうか? <form>タグでaction=****.cgiとして、submitで実行しか思いつかないのですが・・・ 厨房ですいません。
40 :
nobodyさん :02/07/19 13:38 ID:7Bpm6nE5
Locationで検索しれ
41 :
39 :02/07/19 13:42 ID:IEMDM0Nu
>>40 早速レスありがとうございます。検索してきました。
print "Location : ***.cgi \n\n";
こんな感じで、いいのですね
ありがとう!
42 :
nobodyさん :02/07/19 13:47 ID:ou++e83o
掲示板の表示される名前の部分だけ色をかえたいのですが、どうずればよいのですか?
それはHTML関係だろ。 板、いや、スレ違い。
44 :
42です :02/07/19 13:57 ID:ou++e83o
今、CGIで掲示板を作っているのですが。 表示される名前の部分の色を変えるにはCGIのなかを書き換えないといけないといわれたので・・・。
つーかHTMLがわからなくてどうして掲示板作れるんだか
47 :
42です :02/07/19 15:48 ID:ou++e83o
すいません、ご丁寧にありがとうございました。 逝ってきます。
48 :
39 :02/07/19 16:19 ID:h7+QqD7K
すいません、また質問させてください。 フレーム使っていて、右のフレームでCGIを表示したい場合、 print "<form target=right>"; print "Location : ***.cgi \n\n"; print "</form>"; みたいにするしか、無いのでしょうか? いろいろ調べたのですが分からなくて
>>48 色々と何を調べたのか問いたい
フレーム云々自体、スレ/板違い
それにLocationすら理解していないしw
50 :
39 :02/07/19 16:38 ID:???
>>49 レスありがとうございました。
自力で調べてみます。レス違いでしたねすいませんでした。
右のフレームでcgiを表示って、HTMLの問題では? そういうことやってるサイトは無数にあるから、そこのソースコピーしろ。
$hoge = 'hoge'or'fuga'or'foo'or'bar'みたいな時 if $hoge eq 'hoge' or $hoge eq 'fuga' or $hoge eq 'foo' or $hoge eq 'bar' とするのと if $hoge =~ /^[hfb]/ とはどちらがいいのですか?
53 :
52 :02/07/19 17:58 ID:???
訂正 if $hoge =~ /(hoge|fuga|foo|bar)/ にしてくらさい
>>52 値によっては処理がかわるから適切に使い分ければ?
>>53 値によっては処理がかわるから適切に使い分ければ?
56 :
52 :02/07/19 18:02 ID:???
あい、値によって適切に使い分けたいと思います で、こういう値だったらこっちとかいう具体例ってありますか?
>>56 $hoge= 'aaahogeaaa';
これにマッチさせたくなければ上の eq を使えば?
>>57 なるほろ、そうします。
絶対に上の例以外の変数が入ることはなかったとしたら
どっちのほうが早い、負荷が低いんでしょう。
そりゃ、eq のほうが速いだろ。 ただ、正規表現のほうをうまく書き直せばベンチマークをやらないとなんとも 言えない。
そうなのれすか。 正規表現の出来具合によってはあまり変わらないと。 ご助言アリガトン。これから試してみるのれす
>>53 if $hoge =~ /^hoge|fuga|foo|bar$/
()もいらない。
スピードは$hogeによる。$hogeがとる値の確率の高い順に
orは連結するように。
単一のワードなら、eqのほうが、正規表現より3,4倍早い。
まあ、無視できる程度だけど何千回もまわすようなループの中だと
でかい差になるね。
誰か良いプロファイリングのしかた知らないっすか。 どこのコードが何回実行されるかを調べる奴です。 DBugモードは無しで…
>>62 Devel::Dprofというプロファイラがあるよ。
$ perl -d:Dprof script.pl
$ dprofpp
>>63 Httpd上で動かしながらプロファイルをとりたいんどす
>>64 httpd上でも同じこと。
ただしプロファイル中はパフォーマンスが劇的に下がるので
実際に動かしながら、というのはお勧めできないけど。
関係ないけど、
そんな「やれやれ、的外れなレスが来たな」とでもいいたげなレスはやめた方が言いかと。
また一人糞コテハンが。。。 コテハンうざい 消えろ
逆切れモンキーキタ━(・∀・)━!!
>>66 激しく同意。コテハンほどウザイものは居ないと思う。
屁タレ名無しキタ━(・∀・)━!!
しかも粘着&自作自演キタ━(・∀・)━!!
おまえらIDだそうぜ?w
74 :
nobodyさん :02/07/20 14:41 ID:7+IMl9AX
76 :
nobodyさん :02/07/20 15:02 ID:NCN+JAmc
リファレンスを使うと何がいいんですか?
>75 いやちがいます これってトリップ解読プログラムらしいんです でもこれって無限ループさせてRNDとかつかってランダムに6桁を選んで調べているんです だからそれをaaaaaa-zzzzzzまで順番に一通り検索したいなとおもったんです aaaaaaのトリップがそれなんです>PP
一通りって、何日(何十日?)もかかるよ。
とりあえず落ち着け 解析ソフト使えばブルートも出来るだろ
80 :
74 :02/07/20 15:14 ID:???
>>78 半角英語26文字だけですからそんなにかからないはずです
ためしに4文字でやってみたのですが10分もかからかなったです
でもRNDってことは重複をやっているわけで6文字aaaaaaだと解析できなかったんです
(重複の解がいくつもでてくる)
>79
そんなのあるんですか?>解析ソフト
やりたいことは Q、このトリップあててみろ(ヒントは英半角4文字 って言う解をゲットしたいんです これだったらそのプログラムに Nb6Ma0Mっていれると1分かからず解析できます
たんじゅんに26文字の8乗で208827064576種類になり、 だいたい秒速で10000個解析できるとして20882706.4576秒かかる。 つまり、約5800時間(241日)はかかるだろう。 ・10000個解析と書いたのは、わたしのマシンで最近Perlスクリプトで 解析した時の速度です。 ・ちなみに同じマシンにて解析ソフトをつかったところ、約半分の4500個 解析でした。 ・わたしのマシン スペック= CPU:MMX Pentium233: メモリ64M
>>82 そんなかかりますか。。。。。(汗
計算しました。6文字までだったら8Hほどなので現実的です。
実際にプログラムは6文字用です。
やり方教えてもらえませんでしょうか?
>>82 >79さんも書いていますが
この"解析ソフト"ってのは既にあるんですか?
Dream★こそ真の上級者
>>84 解析ソフトなら検索すればすぐにヒットするよ。
今、6文字のやつ作ってみたけど
>>85 が居るから見せるのに迷うな。
ぷぷっ できないなら初めからそう言ってください。 だれも貴方に期待してませんから。
なんですかドリームってのは(=87)ですか? >86 見知らぬ国のってやつですか?>ソフト それならもってます
>>88 それもってるのになんか不満なの? 処理が遅いから?
>>87 はコテハン嫌いのガラクタです。
コテハンは低スキルな馬鹿ばっか
>>89 あれはパスワードをピンポイントであてることは出来ないじゃないですか?
似たようなのはさがせますが
(もしかしてできるのですか?)
たとえばこれなんて2文字ですがとりっぱーじゃ探せないですよね?
もういいです。 このスレッドのヒトは馬鹿ばっかりですね。
# のあとに全角文字とかも入れられたよな。
>>94 それはわかりますが、4文字くらいまでなら即効で分かりたいのです。
今気づきましたが
>>82 さんってトリップ違ったんですね
>>86 そろそろおねがいします
ここがだめなら例のスレにかいてください
無理無理(w
ほら見ろ(ww
あらしさんが消えたらUPってくださいお願いします
こういうのとかはとれるの? #全角文字
質問です @unko=(4487,8456454,4544,945452,85,754); @manko=sort @unko; print "@manko[0..5]"; じゃ数字のソートにならなないです教えてください ネタじゃないです
@obakana=sort{$a <=> $b}@hennsuumei;
>>86 さん
いなくなってしまったのですか? ワーン
おしえてくださいよー
トリップ解析がなぜperlなのかまず説明せよ
>>105 るせんだよ CでもPascalでも良いから
さっさとコードだせや このボンクラ糞厨が!!!
漏れがPascal知らない理由をまず説明せよ
>>106 の削除依頼出してきました、、
っていうかじゃま。ここはPerlコンテストスレじゃないから、、
スレ立てれば?たぶんコテに荒らされるとは思うけど、、
procedure trip(a :String) begin println('解析しました'); end;
な、やっぱり86は逃げただろ? 所詮コテハンで書く奴なんてそんなもの。クズばっか
112 :
藁藁藁 :02/07/21 00:16 ID:???
>>112 どうでもいいが落ち着いてレスしな。
怒りで打ち震えているのはわかるが・・・。
歴代コテハンはクズばっか クズばっか ばかばっか ばっか
116 :
nobodyさん :02/07/21 00:23 ID:N7aMXnNp
2chでコテハンで書く奴は自意識過剰なDQN決定 オマケに低スキルとくるから害以外の何者でもないね 救\ツマ2耐2耐2・ 8対2鎗 !打2蔵 9体2銑<替2蔵 8繕2其>唾2耐2惰2耐3唾2俗 !詑2・4対2陀<9対2陀<8・2然ichマ2・ PE L 「;・ ・ P p bョ ` @ ミ WI | ネ ・ : `
Perl文法的にみて「このスクリプトの組み方はいい」というスクリプトの配布サイトを教えてください。
俺持ってるよ 0fillと左寄せで総当りする奴 CでufcCrypt使ってるから、perlの倍近く速い
>>117 Perlは文法的に破綻していると考えるのは俺だけか?
俺だけか・・・。
>>106 $i = 1;
while(1){
kill "
>>106 ";
if(die "
>>106 "){last;}
$i ++;
}
print $i, "回の殺害で、
>>106 は氏にました";
ホント厨房だらけだな。
86さんは私を裏切ったのですね。 恨みます。
123 :
nobodyさん :02/07/21 09:56 ID:v1h8+7/c
てうst
124 :
nobodyさん :02/07/21 16:16 ID:XUtCuljQ
>>124 はじめ4行しか読んでないが。
$logの代わりに$reload開いてそれを$logに書き戻してないか?
>74です ガーンまだ教えてもらえないのね
>>74 この板の奴は口先だけ。
偉そうな口だけ一人前だから何も期待するな。
>>106 2chで使われているトリップのコードを元にしたやつね。
$hoge = '検索したいトリップ';
for($i=1;1;++$i){
$salt = substr($i."H.", 1, 2);
$salt =~ s/[^\.-z]/\./go;
$salt =~ tr/;:<=>?@[\\]^_`/AaBbCcDdEeFfG/;
$trip = substr(crypt($i, $salt),-8);
print "◆$trip : #$i\n" if ($trip =~ /$ARGV[0]/io);
}
数字のみしか解析できないからあとは適当に改良してな。
>>128 ミスった。$ARGV[0]→$hoge な
130 :
124 :02/07/21 16:56 ID:XUtCuljQ
ファイルに保存される内容はスクリプトの内容そのままではなくて POSTした内容の後ろにソースが付くのですが、、、原因がさっぱり です(´・ω・`)
>>106 ボーランドのC++コンパイラで
#include <stdio.h>
int main(void)
{
while(1)
printf("\t\b\b");
}
をコンパイル。これCのコードね
んで.exe実行。で解析ファイルがでる。
かんばれ
>>131 確かNTのコンソール落ちるんだっけか?
133 :
コギャルとHな出会い :02/07/21 17:08 ID:8IhQDrIi
>>132 俺がやったときは(バッチファイルで)再起動したよ。
そのあと、動作が不安定になって、再インストール。
>>65 遅れましたがレスありあり。
DProfと言葉遣いを勉強してきます。
136 :
. :02/07/21 19:03 ID:uxGaIo9z
Devel-DProfがインストールできません。 PPMで Error installing package 'Devel-DProf': Could not locate a PPD file for package Devel-DProf などというエラーが出ます。 助けてください。
>>136 Perlのバージョンは?
perl5.6以上なら標準で入ってるけど、
そうでなければ自分でビルドするしかないかもね。
138 :
. :02/07/21 19:13 ID:???
>>136 自己解決しました。「Devel-Profiler」って名前だったのねん。
>>124 use strict 使うか -cw でチェックしたりした?
掲示板の表示
sub Output{
my $message,$titel,$name,$mail,$reload,$color,$log,$check;
↑
ちょっとしか読んでないけどtypoハケン
140 :
124 :02/07/21 19:27 ID:XUtCuljQ
いろいろ考えてみたんですがどうやらこの中がおかしいみたいなんですが どこかおかしいところあるでしょうか? sub File_write_read{ my $log,$addlog,$check_string; my @logs; $log = $_[0]; $check_string = $_[1]; $addlog = $_[2]; if(!open(ADD,"+<$log")){ return 0; } else{ flock(ADD,2); if($check_string == 1){ @logs = <ADD>; } elsif($check_string == 2){ print ADD "$addlog"; @logs = <ADD>; } flock(ADD,8); close(ADD); return @logs; } }
exit(0);とexit(1);の違いを教えてください
返す値が違うと何が変わるんですか?
144 :
nobodyさん :02/07/21 21:26 ID:smidQHj9
>>128 これって半角英語入れられないですよね?
$hoge = '検索したいトリップ';
for($i=1;1;++$i){
$salt = substr($i."H.", 1, 2);
$salt =~ s/[^\.-z]/\./go;
$salt =~ tr/;:<=>?@[\\]^_`/AaBbCcDdEeFfG/;
$trip = substr(crypt($i, $salt),-8);
print "◆$trip : #$i\n" if ($trip =~ /$hoge/io);
}
forのところaからzっていれても駄目だし
どうすればいいんだろう
145 :
124 :02/07/21 21:28 ID:XUtCuljQ
>139 ありがとうございます 一応解決しましたが、、、 いろいろ試してみた結果windows上のapache2の上ではソースが 保存用ファイルにソースまで書き込まれてしまいおかしいなと思って LINUX上のapache2で試してみたらちゃんと書き込みできましたこれってapacheのバグ!?
147 :
124 :02/07/21 21:33 ID:XUtCuljQ
>146 つい最近書き始めたばっかり でもこのソースでLINUX上ではちゃんと動いた、、、
148 :
124 :02/07/21 21:34 ID:XUtCuljQ
↑ 俺へのレスじゃなかったのか間違えた鬱だ死のう
>>148 二度とくるな、
お前の頭がバグってる。
初級ネットにPerlスレあるからいってらっしゃい。
rgkltぐvbydfjぎrんちytbgrふえいhげr78おtg67れtg67tれ78gへれるgれhrht コテハンは糞
>>150 お前の挙げた条件はすべて満たしているが?
絶対にないとかほざくからそう言う恥ずかしいことになる。
151には何か別のものが見えるらしい。こわっ
153 :
nobodyさん :02/07/21 21:56 ID:smidQHj9
>>146 かけません。だから聞いているんです
お願いします
>>154 たまたま見つけたから。
知りたいんです。
>>149 お前も来るな!
何エラぶってのよ!
ヴァーーーカ
>>157 頭にエラーって何でしょう?
脳の事いっているの?
プログラムより日本語勉強したら?
┌─────────┐ │ | │ . キ違い警報発令 ! │ │ | └―――──――――┘ ヽ(´ー`)ノ ( へ) く
foreach (@file){ @link=split/<>/; if($link[0] eq "hoge"){ $hoge="$link[2]"; } foreach($hoge){ @next=split/\t/; print "$next[0]"; ..... } と処理したいんですが、 どうも foreach($hoge){ だと処理ができません。 こうしたい場合はいったいどうすれば宜しいのでしょうか?
@next= split(/\t/, $hoge);
162 :
nobodyさん :02/07/22 00:04 ID:WiTDQmMb
>>160 [書式]
foreach 変数(配列){
処理
}
163 :
160 :02/07/22 00:45 ID:???
すみません。間に合わせで解決しました。
>>164 良かったね。と言ってやるのが大人の対応です。
jjjjjjjjjj
168 :
nobodyさん :02/07/22 03:48 ID:Ajg2mltJ
perlでintergerなど、変数の型を指定する事は可能ですか?
あい
170 :
168 :02/07/22 07:13 ID:Ajg2mltJ
どうすれば良いんですか?
>>170 intな値を代入する。
$int = 100 ;
aaa
173 :
♦# :02/07/22 14:50 ID:???
変数の型で interger って初めて聞いたYO!
174 :
Piano ◆QGZrdAAA :02/07/22 15:27 ID:EIYlzT8w
googleのI'm feeling Luckyを組み込んだ
メタ検索CGI作ってるんですが、
print "Location:
http://www.google.co.jp/search?q= ".$in{'word'}."&ie=UTF-8&oe=UTF-8&hl=ja&btnI=I%27m+Feeling+Lucky&lr=lang_ja\n\n";
とした場合、平仮名やカタカナは問題なく即リンクできるんですけど
漢字で検索をかけた場合、見当違いなホームページに飛んでしまいます。
$in{'word'}に入ってる値のエンコードが問題かと思いましたが
普通のgoogle検索だと問題なくこのメタCGIで検索できたので
エンコードの問題では無いと思うんですが、、、。
誰か教えて下さい、お願いします。
gooでやってるみたいなHPのスクリーンショットをサムネイル化したリンク集できる? Perlで。もしくはPHPで。
176 :
nobodyさん :02/07/22 15:52 ID:K2sicsKl
geocitiesはCGIつかえないの?
使えないよ。
for(my $i = "0001";$i < "0011";$i++){ print "$i\n"; } 結果 0001 0002 ・ ・ ・ 0010 初めて知ったyo
どっかの本に $prog = <<"PERL"; for($i=1;1;++$i){ $salt = substr($i."H.", 1, 2); $salt =~ s/[^\.-z]/\./go; $salt =~ tr/;:<=>?@[\\]^_`/AaBbCcDdEeFfG/; $trip = substr(crypt($i, $salt),-8); } PROG eval $prog; こうすると、似たような処理を繰り返すとき早いとか書いてあったけど実際はどうなの?(記憶が曖昧でスマソ)
なんか、サブルーチンに似てるな。
181 :
nobodyさん :02/07/22 18:42 ID:7X7F8f9K
open(IN,"$log"); eval { flock IN, 2; }; @line=<IN>; eval { flock IN, 8; }; close(IN); すみません質問です。 このロック処理の方法はミスがありますでしょうか? 私は意味が無いような気がするんですが、 どうもこれだという理由がなくて困ってます。
>>181 あっちこっち書くなよ、糞虫が
2chで外国人以下の敬語モドキ使ってる暇有ったら
検索でもしろよこの中卒塗装工が
183 :
181 :02/07/22 18:53 ID:???
>>182 すみませんでした。
で、答えの方はー?プゥ___。
>>181 open(IN,"<$log");
eval { flock(IN, 2); };
@line=<IN>;
close(IN);
これのほうが良いかな〜?
185 :
181 :02/07/22 19:14 ID:???
>>184 そうですか〜。
わっかりました。
ほんとにですか?
冗談に決まってるじゃん
187 :
181 :02/07/22 19:19 ID:???
ハ-ゲシクワ-ラタ
190 :
181 :02/07/22 19:50 ID:???
>>181 flock(XX, 1) 読込中なので書込をロック、あとから来たら待つ。(ブロック)
flock(XX, 2) 書込中だから書込読込ロック、あとから来たら待つ。(ブロック)
flock(XX, 5) 読込中なので書込をロック、あとから来たら0を返す。
flock(XX, 6) 書込中だから書込読込ロック、あとから来たら0を返す。
flock(XX, 8) ロック解除(close(XX)すれば解除なのであまり使わない)。
191 :
181 :02/07/22 19:51 ID:???
残りは俺の肛門。
192 :
Piano ◆QGZrdAAA :02/07/22 20:57 ID:Ipm5/McI
どなたか
>>174 の質問がわかる方いらっしゃいませんか?
>>192 googleAPIについて勉強するのが吉。
194 :
181 :02/07/22 21:06 ID:???
195 :
181 :02/07/22 21:07 ID:???
196 :
181 :02/07/22 21:10 ID:???
&ieとか書くと駄目だね。 わかったか厨房?プゥ___。
197 :
181 :02/07/22 21:17 ID:???
>>Piano ◆QGZrdAAA 195の方法で出来たんだろ? 無視かよ!
るせヴァカ
199 :
181 :02/07/22 21:20 ID:???
∧ b /●ヽ/ (∧_∧) / ̄ ̄ ̄ ̄ ̄ ( ´∀`)< 質問前に過去スレ検索モナー。 ( ) \_____ | | | (__)_)
>>195 行けました!
どうもありがとうございました!
203 :
nobodyさん :02/07/22 22:58 ID:11nH30Zk
KENTの掲示板弄ってて、色々エラー出るんで文法チェックのスクリプト通しながら 虫取りしてるんですが、たびたび「@〜は\@〜と書け」ってな表示に遭遇します。 これは多分配列を認識してないんだと思うんですが、原因が分からないんです。 どこか変ないじり方しちゃったんでしょうか。 なんか全部の配列について同じように警告されてる感じなんですが。
「'」とか「"」でくくっているのでは? 本当にそうなるかはわからないけど。
206 :
181 :02/07/22 23:22 ID:???
>>202 返事がおせぇーよ。
じゃぁな。プゥ___。
207 :
nobodyさん :02/07/22 23:28 ID:11nH30Zk
えと、 In string, @lines now must be written as \@lines at yybbs.cgi line 285, near "@lines" って書かれるんですけど、285行には@linesなんてないし、@linesが含まれる行は ログの取り込み処理とかそういうので、どこもいじってないはずなんです。 ひょっとしてどこかでクォーテーション閉じ忘れたとか、そんなことでしょうか。 見直してますが、2600行ぐらいあるんで大変です。
208 :
203 :02/07/22 23:28 ID:11nH30Zk
>>208 285行前後を良く見るんだ。 ; の付け忘れとか。
悪い事は言わんからその辺のFAQ読みながら 自分で50行位書いてみれ、それが出来たら解決する。 どっかで行か何か閉じるの忘れてるんだろけど…
211 :
203 :02/07/22 23:42 ID:11nH30Zk
えと、色々見直したらヒアドキュメントの閉じ方が変になってるのを発見しました。 ってか、頭の方のEOMが小文字になってました。 なんか変な置換かけちゃったみたいです。 お騒がせしました。
212 :
168 :02/07/22 23:53 ID:???
integerの間違いです 結局無理って事ですよね?
Cで言うところのenumerationってどうやってます? %e = (abc => 0, xyz => 1, ... , xxxx => 99)なんてのをスマートに初期化したい。
214 :
nobodyさん :02/07/23 00:40 ID:8Y4x0Hwt
質問があります。 例えば、$dataという変数のなかに、ABという文字列がいくつあるか カウントすることはできますか?
216 :
nobodyさん :02/07/23 00:43 ID:Cp6+hfm6
掲示板を作成中なのですが、 設定された最大記事数を越えると過去ログに行くようには出来るのですが、 管理人の任意の時に、表示されている記事を過去ログに行かせるというのがうまく出来ません。 何か良い方法はないでしょうか?お願いします。
すみません、さっきの質問取り消します。
すみません
220 :
nobodyさん :02/07/23 00:52 ID:8Y4x0Hwt
print $xの出力が あいうえお かきくけこ さしすせそ たちつてと なにぬねの だった時、最初の3行のみを表示するには、どうすればよいでしょうか?
221 :
213 :02/07/23 00:56 ID:???
>>215 ハッシュでやろうとしてるけど、abc => 1, xyz => 2と数値を直接書くのはださいので
かっちょいい書き方(初期化)があるかなと。
222 :
☆ :02/07/23 00:58 ID:hvIhNQI1
>>220 出力しちゃったらどうにもなりません。
ああ、UNIXなら
perl a.pl | head 3
でOKか。
224 :
216 :02/07/23 01:01 ID:Cp6+hfm6
>>219 掲示板に書き込みがあり、ある一つの話題で盛り上がる
↓
その話題が終わる
↓
※管理人が、その話題に関する書き込みをまとめてpast.htmlに送る
↓
各過去ログ(past1.html past2.html〜)に飛べるようにする
という風にしたいのです。分かりにくかったらすいません。
%e = (abc => 0, xyz => 1, ... , xxxx => 99)なら、 @e{qw(abc xyz)}= (0 .. 1);
226 :
213 :02/07/23 01:12 ID:???
>>225 それ、かっこいいですね。いただきっ。ありがとうございました。
>>226 my @symbols = qw/ foo bar baz /;
my %e;
@e{@symbols} = (0..$#symbols);
TMTOWTDI
>>227 さらにそれをuse constantで定数化しちゃうというのも・・・
BEGIN
{
my @symbols = qw/ foo bar baz /;
my %e;
@e{@symbols} = (0..$#symbols);
while( my($name,$value) = each %e ) {
eval sprintf( 'use constant ENUM_%s => %d', uc($name), $value );
die if $@;
}
}
print ENUM_FOO, "\n";
>>179 それじゃあ$iとかが全部その時の値に置換されちゃうじゃん・・・
ともかく、文字列をevalするのは遅い。そういうことをするのは例えば
AUTOLOADを使って動的に関数を作成するときとかだけだと思うよ。
そうすると2度目からはAUTOLOADを通さずに関数が呼び出されるからその分
早くなるので。
gooでやってるみたいなHPのスクリーンショットをサムネイル化したリンク集できる? Perlで。もしくはPHPで。 教えて下さい、お願いします。 ちなみに私は17歳・女です。
>>230 うむ、死ぬ気でHTMLパーサ書いてデザインしてくれ。
>>228 そのくらいならenum.pmを使ってほしい。
use enum qw(FOO BAR BAX);
>>232 えー、enum.pm標準じゃないじゃん。いや、どっちでもいいんだけど
固定ハンドル=低スキル
固定ハンドルは死ね
コテハンよりお前らの方がウゼー
>>230 >ちなみに私は17歳・女です。
誰が信じるか!(・э・)
>>230 信じる以前に、そんな意味の無いことを書く奴はうせろ
∧ ∧ /.::ヽ /.:: ヽ /.::: ヽ /.:::: ヽ /.::: ヽ /.:::: ヽ このスレは一体 /.::::::. ヽ,,,,,,,,,,,,,,,,,,,,,,,,,,,/.::::::::. ヽ /.::::::::::: ヽ 何なのですか /.::::::::: / ヽ ヽ /.::::::: / ‐・‐ ‐・‐\ ヽ ヽ.:::::: .:::: / ヽ.::::: .::::: / ヽ.:::: \__/ / ヽ.:::: \/ / \.::::: /
質問する側の態度は丁寧なのに対して 答える側の態度は悪すぎですね。 絵梨悲しいです。
> 1:自分はこう言う事がしたい。 > 2:それでこんな風にやってみたが・・・ > 3:それだとこんなエラーが出て上手く行かなかった。 > > 1と3が無いと誰も答えられないよ。 > 良い回答は良い質問から。一緒に勉強しましょう。 質問のテンプレートが>1に用意されてるのに無視か? その癖誰も聞いちゃいねえ話を一人でしてる。 態度が丁寧だってなら、書き込み内容の要不要くらい判断しろ。
加えて、PHPの話ならスレ違いだ。 どんなに態度が丁寧でも、郵便局で牛丼頼むような奴にまともな対応が返ってくるなんて思うな。
おいコテハン野郎 こんな質問に答えてこそ存在意義を示せるってもんじゃないか。 答えてやれよ
>>230 できるかできないか聞いているならできる
教えてあげたんだからこれ以上くる必要はないから来ないでね。
>>1 もまともに理解できない人は。
JAPH というのは just another perl hacker の略のですにゃん◆JAPH9PWA は神なのですにゃの php板では最強なの(´ω`)/ >>◆JAPH9PWA ただもう出てこないでまじで 名無しで受け答えしてもなんの問題もないやん マ板では相手にしてもらえなかったのか(泣
具体的な方法を尋ねたらダンマリを決め込むであろう248がいるスレッドはここですか?
コテハン答えろ!!!!
>>244 だって、私初心者ですよ?
書き方も考え方も分からないのに・・酷すぎます。
254 :
ハァ? :02/07/23 15:19 ID:???
ハァ?
助けて頂けませんか?
皆で頑張りましょうよ! 力を合わせればきっと出来ます!
どれが本物で、どれが似非物だ?
>>yuri
出来るよ、ImageMagickで検索してみ
ただこれのHTMLパーサは10年前の代物だから、このままだと
話にならない。
*nixならmozillaやGaleonにレンダリングして貰っても良いんだけど
普通はサーバにブラウザなんか入って無い、と言うかXさえ走って居ない
やるなら、Mozillaのソース追ってXLSだっけ? でperlから叩ける様に
してやるのが一番良さそうだが俺はやった事が無い
WINならIEコントロールかな?
http://www.nk.rim.or.jp/~t_kimata/cgi/ ここの管理人が前に色々やってたな
その部分は公開していないのが残念だな。
長文ウザイ もっと分かり易く教えろやヴォケが!
japu痰がいた頃はもっとまた−りしてたけどなぁ。
>>262 同意
良スレだったんだが・・・・
夏のせいか
初心者がここに質問きて ぼろくそに言われて、荒らしになったと思われ 最近、回答者も”俺は偉いんだぞー病”にかかってるの居るからなー
>>264 Perlできてもなぁ・・・。
あのシェルスクリプトからの成り上がりっぷりがくさくて嫌い。
>264 最近の事じゃないけどな。 初期からずっとだよ。 さて、気を取り直して。 1 名前:nobodyさん 投稿日:02/07/18 16:34 ID:jemWJhH3 いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。 1:自分はこう言う事がしたい。 2:それでこんな風にやってみたが・・・ 3:それだとこんなエラーが出て上手く行かなかった。 1と3が無いと誰も答えられないよ。 良い回答は良い質問から。一緒に勉強しましょう。
>>266 CGI改造したら、サーバーダウンさせっぱなし…追放されちった…
開発者向けでないテストサーバー知ってる人いますか?
出来れば無料…
知らないか…
localhost
269 :
nobodyさん :02/07/23 22:35 ID:hYANtpdN
掲示板で1度書き込みした後、更新する度にその書き込みが書き込まれていく原因として何が考えられます? お願いします。
273 :
nobodyさん :02/07/23 23:24 ID:dbl+1Fdv
>>271 bbs.cgi?name=giko&msg=itteyoshi
こんなのがリロードされたら連続書き込みになっちまうだろ。
書き込みを受け取ったら、
Location: bbs.cgi
で飛ばすがよろし。
>>273 thanks
初心者にとっての頼みの綱であるこのスレを守っていってください。
さよなら。
LWPの使い方についてです。。
ちょっと自分で調べてみて、
use strict;
use LWP::Simple;
print get('
http://www.2ch.net/ ');
とすると、そのページが表示される、というところまで調べられました。
そのページのHTMLソースを1行ずつ配列に入れていきたいんですけど、
どうすればできるんですか?よろしくお願いします。
ふぁ〜あ、暇だなや。。。
>>276 use strict;
use LWP::Simple;
my @foo = split( /(?:(?:\r)?\n)+/, get( '
http://www.2ch.net ' ) );
ちなみにその質問は「LWPの使い方」とは違いますね。 ;)
>>278 ありがとうございます。
やってみたら、正常に動きました。
280 :
m :02/07/24 05:47 ID:rNnlw0cu
なんで my 宣言しなきゃいけないんですか? 外すとエラーになります。。 my宣言は都合でしたくないんですけど解決策はありますか?
>>281 なんでしたくないの?
使わない時もあるけど、そっちのほうが例外で普通はmyを使わない
スクリプトってのは酷いコードになるよ。
>>282 perl使ってる時点でstrict通そうがコード酷いのはいなめないと思うが。。。
つーか綺麗さより使い勝手って割切られてる言語なんだし。。。
csvを使ったデータベース顧客一覧CGIを作ったんですが、 Netscape4.7以前のバージョンで表示されないんです。 IEだと表示されたんですが・・。 Javascriptが原因かと思ったんですが消してみてもダメでした。 ちなみにソースを見るとちゃんと顧客一覧が表示されているんです。 ソースにはあるのに、どうしてブラウザには表示されないんでしょう・・。
>>285 lintにでも書けてみ?なんか間違いあるんだよ。
>>285 Perlのコーディングうんぬんじゃなくて、HTMLの間違いなんじゃないの?
tableのタグの閉じ忘れとかさ、、、
288 :
285 :02/07/24 11:06 ID:???
>>286 単純にタグの閉じ忘れでした。
Perlが原因では無かったです。
逝ってきます・・・・・・・・
タグを閉じ忘れても表示するIE。 まともなHTMLを厨が書かなくなるわけだ。
>>284 Perl使ってるからしょうがないなんて言い訳にすぎない。
どんな言語を使ったって同じ。
>>290 構造化言語とシェルスクリプトに無理矢理構造化を組み込んだ言語。
オブジェクト指向言語とシェルスクリプトに無理矢理オブジェクト指向を組み込んだ無理矢理構造化を埋め込んだ言語。
ノイズはどんどん増幅されている。
はいはいそうだねー。きっとコンパイラーにお守りしてもらえば いいコードかけるのねー。
>>292 うん。便利。
まぁ、あの無駄に多いライブラリ覚えてる奴とかすごいと思うけどな。
>>293 おめでとう。自己満足できればそれでいいと思うよ。
>>295 言いたいことがあるなら、メール欄に書いても伝わらないYO!
>>297 どこがおもしろいかわからんかったよ。おもしろい部分を説明してくれ。
299 :
nobodyさん :02/07/24 15:14 ID:izWyFOGV
UNIX板から来ました。
http://uptime.netcraft.com/up/graph ここにあるような、URLを指定してそのサーバーの
HTTPヘッダ情報を取ってくるようなスクリプトを作成したいと考えています。
自鯖の情報は取れるようになったのですが、SERVER_SOFTWARE、
イメージとしては
1.URL入力
2.そのURL(鯖)に対して自鯖のCGIをリクエストしてよってお願い
3.向こうの鯖の環境変数get
てなカンジかなぁ、と思っています。
つまりまぁ、上記URLのようなことができればこんな面倒なやり方じゃなくてもいいのですが。
何かよいお知恵をお貸しください。
300 :
コギャル&中高生H大好き :02/07/24 15:16 ID:nUYA8H9H
301 :
nobodyさん :02/07/24 15:31 ID:e324b2xP
意味をちょっととりかねる。 そのサーバのHTTPヘッダ情報をとるのになんで向こうのサーバが自サーバのCGIを リクエストする必要があんの?
Socket使って、HTTPでGETなりPOSTなりすればいいだろ。
以下のコードで、2つ目のprintが実行されません。 なぜでしょうか? my $a = "!"; print "Test1" if $a =~ /!/g; print "Test2" if $a =~ /!/g;
304 :
nobodyさん :02/07/24 16:13 ID:e324b2xP
gを付けない。あと$aという変数は特殊な意味をもつので普通避けるべき。
306 :
nobodyさん :02/07/24 16:19 ID:izWyFOGV
>>301 確かに自分でもよく整理できてませんでした。(汗
>>302 今調べたらsokectのサンプルソースがあったので、
これを頼りにがんがってみます
ありがとうございました。
307 :
てすた :02/07/24 17:48 ID:IOzuRKcl
308 :
てすた :02/07/24 17:49 ID:IOzuRKcl
309 :
てすた :02/07/24 17:50 ID:IOzuRKcl
>308 iswebはCGIの外部呼出し不可。
311 :
てすた :02/07/24 17:52 ID:IOzuRKcl
312 :
初心者 :02/07/24 18:16 ID:???
CGIファイルにアクセスするとIEでは、正常に表示されるのに ネスケではHTMLソースで表示されてしまいます。 ネスケの全バージョンでダメでした。 Content-typeとか<HTML><BODY>等は問題なく入ってるんですが・・
ヘッダーの部分見せてみろ。
315 :
初心者 :02/07/24 18:21 ID:???
>>313 本当です。
Perl内は
print "Content-Type : text/html\n\n";
・
・
print "<HTML><HEAD><TITLE>投票結果</TITLE><META HTTP-EQUIV=\"PRAGMA\" CONTENT=\"NO-CACHE\">\n";
print "<meta http-equiv='Content-Type' content='text/html; charset=Shift_JIS'></HEAD>\n";
print "<BODY BGCOLOR=#000000 TEXT=#FFFFFF>\n";
・
・
print int($count) ;
print "</table></div></BODY></HTML>";
となっています。
>>312 サーバはどこ?
逆なら考えられるんだけどな・・・トクトクとかで。
>315 自分で初心者を名乗る奴は基本的に信用できん。 print "Content-Type: text/html\r\n\r\n"; にしてみろ。
319 :
初心者 :02/07/24 18:31 ID:???
>>316 lintかけてみました。
ドキュメント宣言やHTML lang="ja"を入れてみたんですけど
やっぱりダメです。
ネスケでHTMLソースがダラダラと表示されてしまいます。
>>319 そもそもスクリプト中にHTMLまるまる入れるのは何とかできんのかと。
編集、デバッグ、保守
すべてが大変だが。
321 :
初心者 :02/07/24 18:33 ID:???
>>318 オオオオ!!!
バッチリ逝きました!!!
ありがとうございます!!!
ローカルでは\n\nでうまく行ってたのに
ミクストメディアではこんなの必要なのか・・・・・
322 :
初心者 :02/07/24 18:34 ID:???
>>320 HTML外部にしたら動作重くなるから。
>>318 それってWindows以外で受け取っても大丈夫?
Perlで日本語を使うときはEUC-jp。
表\示
>>328 普通だろ。
日本語マッチとかするときに。
確かにEUC-JPの方がいい。 漏れはShift-Jisで使い続けてしまったせいでとても変更してられないと思い変えてないが。 これから始める人はEUC-JPにしておいた方がいいぞ。
正しくは Shift_JIS と言ってみるテスト。
>332 スマヌ
今掲示板をつくっていてログを読みこんで表示させるところまでは出来たのですが よくある設定されている件数を超えると自動で「次の10件」などというアンカーを出すには どういった処理をすればよいのでしょうか?
>>336 //ボタンを表示するか決定
//引数:ページ
//返値:無し
function checkbuttonvisible($page)
{
//ファイル開く
if(file_exists($this->config->datafile))
{
$fdat = file($this->config->datafile);
$count = count($fdat);
}
//戻るボタンの制御
if($page <= 0)
$this->beforebuttonvisible = false;
//進むボタンの制御
if($count - ($page * $this->config->rescount) <= $this->config->rescount)
$this->nextbuttonvisible = false;
}
PHPだがね。
338 :
nobodyさん :02/07/24 21:51 ID:OQVd1xfT
KENTさんのYY-BBSで半角カナが使えるようにするには どこをどうすればよいのでしょうか?お願いします。
>>338 スクリプト言語の一つもまともに使えないくせによくほざく。
>>340 マルチポストするなと言うのも入れてほしい・・・。
>>340 コテハンは荒れる元なので自粛ってのもいれてほしぃ。
まさに、コテハン叩きの思うつぼだな。
344 :
nobodyさん :02/07/25 01:29 ID:EsugPjEd
>>338 デコードのとこで
jcode.pl使ってる箇所をコメントアウトしてみ
345 :
nobodyさん :02/07/25 02:08 ID:/52BoRCi
perlで質問です。実行すると例えばユーザー名、パスワードを入力し、送信してくれる プログラムが作りたいんですけど、どんなライブラリ、関数を使えばよいでしょうか? キーワードだけでも教えていただけないでしょうか?お願いします。
>>345 頭の中で言いたいこと整理してからもう一度来い。
>ユーザー名、パスワードを入力し、送信してくれる
意味がわからん。何のユーザー名、パスワード。何処に送信?
scrachって何の事なんでしょうか?マジレスおなぎします。
348 :
nobodyさん :02/07/25 03:06 ID:GntP6rBS
from scratch=ゼロから, 初めから.
サンスコ。
351 :
http://www.geocities.co.jp :02/07/25 06:29 ID:1xMT6UXy
どなたか、Geocitiesの広告のはずし方をご存じませんか?
>>351 if $351 == aho {
$351 = itteyoshi;
}
if ($_351 == "aho") { $_351 = "itteyoshi"; }
358 :
357 :02/07/25 12:09 ID:???
if ($_351 eq "aho") { $_351 = "itteyoshi"; }
renameとunlinkを使いたいのですがうまくいきません。 rename (aaa.txt, bbb.txt); でやると実行権限がないとエラーが出ます。念のためaaa.txtのパーミッションを777に したんですけどダメでした。 unlinkは unlink aaa.txt; とやるのですがファイルが無いとエラーが出ますなんででしょう。
>>360 パーミッション777のファイルがリネームもアンリンクもできないということは、
ファイルシステムが壊れています。OSを再インストールしましょう。
OSというのは、サーバーのOSが壊れてるって事ですか? たぶんそれはないと思うんですけど。
ディレクトリのオーナー、パーミッションはどうなってんのよ
>>362 起こっている現象から推測すればそういうことになります。
367 :
nobodyさん :02/07/25 14:07 ID:av9ITDXM
aaa.txt, bbb.txt じゃないの?
すいません、出来ました。 でも今度はファイルが無いとエラーが出ます。 ファイルはちゃんとありますよね・・?
まだやってたんか。。。$ENV{'PATH'}を出力してみ。
370 :
nobodyさん :02/07/25 14:22 ID:v0Zz+Fi9
rename ("../aaa.txt","../bbb.txt"); こうしているんですが。
371 :
nobodyさん :02/07/25 14:24 ID:av9ITDXM
Tripodの特殊事情じゃないの。別鯖とか。よくしらんけど
>>370 そんなこと書かれてもそっちのディレクトリ構造知らんし。
373 :
nobodyさん :02/07/25 14:25 ID:v0Zz+Fi9
#!/usr/bin/perl require 'jcode.pl'; # rename ("../aaa.txt","../bbb.txt"); print "Content-type: text/html\n\n";# HTML文出力宣言 print "$ENV{'PATH'}<br>"; print "エラー:$!"; 何も出ないですね。。
374 :
nobodyさん :02/07/25 14:26 ID:v0Zz+Fi9
/cgi-bin/aiueo.cgi /aaa.txt こういう感じです。
>>374 ほんとにそうか?ホスト名が分かれているからCGI専用のサーバが分かれて
いるんじゃない?実際のディレクトリ構造とマウントポイント・エイリアス・
リンクなどもあるからニンともカンとも。
サーバのFAQ位読めよ つーかローカルでテストやれや 外でするならKENTの設定変える以外触るな
renameとかってOSによって動くか動かないかわからないみたいだから サーバー上でやらないと意味ないじゃん。
るせんだよ チンカス夏厨 FAQ読めっつってんだろ ああ?? おまえ日本語の不自由な方か?
>>378 FAQ読んだけどrenameという単語は出てこなかったです。
そんなにカッカしないでヒントになるところ教えてください。
tripod.co.jpはCGIはcgi.tripod.co.jpサーバ 普通のファイルがmembers.tripod.co.jpサーバ
381 :
nobodyさん :02/07/25 15:46 ID:v0Zz+Fi9
383 :
:02/07/25 16:00 ID:???
>>381 それだけでrenameできると勘違いしている新種の厨房(推定:中学校1年生 オナニーの覚えたて。)
痛いのはわかったんで何が違うのか教えてください。
別サーバのファイルにはLWPとか使わないとアクセスできません。 おとなしくcgi-bin/以下にファイルを置きましょう。
どうして、別サーバーなのに、一回のftpで両方つながるんでしょうか。 というか、一つのサーバーにつないでいるのにあたかも他のサーバーのディレクトリも見えるなんて不思議です。
#!/usr/bin/perl require 'jcode.pl'; rename ("aaa.txt","bbb.txt"); print "Content-type: text/html\n\n";# HTML文出力宣言 print "$ENV{'PATH'}<br>"; print "エラー:$!"; aiueo.cgi と aaa.txt を同じディレクトリに置きました。 エラー:No such file or directory と出ました。 今度は何がいけないんですか? そんなファイル無いと言われても確かに同じディレクトリにあります。 どうしてこんなに分からず屋なんでしょうか。
ftpでつながるのはftpサーバ(ftp.tripod.co.jp)です members,cgi,ftpそれぞれ別なんです。
>>387 errorでてもファイル名は書き換わってないですか。
はれ!? ほんとだ! 変わってる!! なんでだ!?
そろそろ場違いだと気付いて欲しいんだけど?
じゃどこで聞けばいいんですか?
>392 tripodのサポート。
@レンタルCGIでチャットをおきたいです APeriへのパスの指定とディレクトリをいじってみたけど Bわかりませんでした。パスの指定とは基本的にどういうことなのでしょうか? 借りたサーバーのQAにいってもよくわかりませんでした。もっとも外国鯖なので 翻訳したのが少々わかりづらかったかなと・・・ 借りた鯖はPROHOSTINGです パスの指定、ディレクトリの仕方をご教授ください お願いします
>395 惜しいな。 >いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。 「コーディング」のスレなんだ。 設置は別のところで聞いて。
>>397 あ・・・そうですね^^;
すいませんでした。ご親切にどうもです^^では
>>399 スレ違いの意見に答えてくれてありがとうです><
h2xs -A -n Xstest でXS用のモジュールスクリプトフォルダができる cd Xstestして Xstest.xsに void hello() CODE: printf("Hello. Tinkasu Boy!\n"); とかく。チンカスはそうお前の事だ。 んでperl Makefile.PL nmake nmake install
で確認だ。 #!/usr/bin/perl(まぁDOSならいらんがな) use Xstest; Xstest::hello(); でそれ実行できればOKだ。OK?糞Perler。 お前らが20代とかだったら俺は泣くね。
シーン。。。
XSチュートも読まずに(読めずに?)スレ一本分も悩んでたのかあ 前に5.7絡みでgunzipが講釈してた様なきがするけど やっぱり●●は想像を絶する位●●なのかなあ
CGI実行ユーザー名を獲得する事って可能でしょうか?
whoami
408 :
406 :02/07/26 07:35 ID:???
有難う御座いました。
>>408 use User::pwent;
my $pw = getpwuid($$);
print $pw->name;
とりあえずnmake15.exeってのはnmakeインストーラ、 というか圧縮されたプログラムなんで、実行するとnmake.exeとnmake.errってファイルが出来る(だったかな) だからrenameの必要はないはずなんだけどなぁ。彼は実際にやってみたんだろうか。
opren(file-handle, "filename") || &error("ファイルが開けません"); この || って、ダメだったらって意味ですか?
>>413 もしくは。
ifの中のと一緒だ。
前の式がtrueなら後ろの式は評価されないと言う性質を逆手に取った
他の言語ユーザに見せたらどつき倒されそうな処理です。
perlでしかやらない方がいいという書き方って事ですか。 あと、 sub auto_link { $_[0] =~ s/([^=^\"]|^)(http\:[\w\.\~\-\/\?\&\=\@\;\#\:\%]+)/$1<a href=\"$2\">$2<\/a>/g; } これはURL文字列を自動的にリンクにするサブルーチンですけど、 自分は正規表現が複雑なのはわかりません。 でもサブルーチンは便利で引数だけ渡せば意図する結果を返してくれます。 サブルーチンの中の正規表現をわざわざ噛み砕いて理解する必要はありますか? まぁ、これがわからないと自分でいちから作れないという訳になってしまいますが。
417 :
nobodyさん :02/07/26 14:09 ID:OgCRHfVm
1:自分はこう言う事がしたい。 script01.plをuser01で実行し、その中からsystem関数を使って script02.plを実行させたい。 ただし、script02.plは、user02が実行したものとしたい 2:それでこんな風にやってみたが・・・ perl -h で起動オプション調べてみましたが、起動ユーザーを指定 する方法がありませんでした。 何か、スクリプトを起動するユーザーを選択する方法ってないでしょうか?
>>417 script02.pl をsetuidモードにでもしとけ。
>>416 そうか?Cとかで
fp = fopen("m","r") || printf("error!");
なんてコード書いたら多分干される。
420 :
nobodyさん :02/07/26 14:49 ID:OgCRHfVm
>>418 googleで調べたら、chmod 4755 script02.pl でsetuidモードになるようです
が、やはりだめでした。
script02.pl は、PostgreSQL への INSERT文を集めたスクリプトなんですが
database not connecti が出ますね。
いや、言わないでください。GRANTでデータベースの方に権限与えれば
っていうのは重々判ってはいるんですが、script01.plを実行するユーザは
nobodyにしたいんですよね。将来、CGIにする為。
dbにnobodyの権限を与えるのを躊躇ったものですから、script02.pl を
PostgreSQLユーザーの権限にしておいて、実行ユーザーを換えようと
思ったんです。
どうも、この方法はだめなようですから、GRANTを検討してみます。
>>420 接続時のパスワード設定すりゃいいじゃん。病院いっとく?
サブルーチンの終わりの return $hoge; ↑ってどういう意味があるんですか?
424 :
nobodyさん :02/07/26 15:52 ID:NvB7dZaP
サブルーチンを呼んだ側に戻り値を返す。
425 :
422 :02/07/26 15:54 ID:???
>>423 ゴグってみましたんですがいい所があったのに僕の頭のメモリーが足りませんでした。
if(-e hoge.txt){ print "OK"; } else{ print "NO"; } cgiファイルと同じディレクトリにhoge.txtがあるんですけど NOしか出てきません。なぜですかね。 他のファイル演算子も試しても全部elseになっちゃいます。
427 :
422 :02/07/26 15:55 ID:???
>>424 ありがとうございます。
それなんですが無くても動作する場合とかがあるんですが。
どういうことですか?
428 :
422 :02/07/26 15:57 ID:???
if(-e $hoge){print "f";} else{print "b";}
>>427 Perlは一番最後に処理されたステートメントが「自動的」に
戻り値になる:
sub FOO_1 { 1 }
sub FOO_2 { return 1 } # FOO_1 と戻り値は一緒
sub BAR { FOO_1() } # 戻り値はFOO_1の戻り値
431 :
nobodyさん :02/07/26 16:01 ID:NvB7dZaP
戻り値を必要としないサブルーチンだったら要らないというだけでしょ。
returnを書かなかったら最後に評価された式の値が返るんじゃないの。たしか。
>>426 サーバがIISかPWSとか?
432 :
nobodyさん :02/07/26 16:01 ID:NvB7dZaP
すごいかぶったね。
433 :
nobodyさん :02/07/26 16:01 ID:hk7TA9Ju
>>426 それってhoge.txtを""でくくってないからとかいうオチでは?
例えばコマンドライン上から以下を実行するとOKはプリントされないけど
perl -e 'print "OK" if -e hoge.txt'
これはOKってでるみたいよ:
perl -e 'print "OK" if -e "hoge.txt"'
これまたuse strict;しないからそういうエラーがでるわけだ・・・
435 :
426 :02/07/26 16:08 ID:???
えっと、ftpでつないだときに表示されるディレクトリの一番上から記述したら 一応ファイルがあることは確認できました。 $a = "home/***/html/cgi-bin/hoge.txt"; if(-e $a){ print "OK"; } else { print "NO"; } でOKでした。 で、renameしたいので、 $b = "home/***/html/cgi-bin/hoge2.txt"; rename ($a,$b); としましたが、アクセス権が無いとエラーが出ます。 hoge.txtを777にしてもだめです。 ファイル演算子でアクセス権を確認すると全てOKでした。 なぜでしょうか。
436 :
422 :02/07/26 16:10 ID:???
>>429 sub BARみたいな使い方があるんですね。
初めて知ったことなので勉強になりました。
ありがとうございます。
>>430-431 最後に評価された式の値が帰るような書き方をすればreturnは別になくてもいいのですね。
>>434 そんな気がしました。
437 :
422 :02/07/26 16:13 ID:???
>>435 $a="hoge.txt";
$b="hoge2.txt";
rename($a,$b);
438 :
422 :02/07/26 16:15 ID:???
439 :
422 :02/07/26 16:16 ID:???
$dir="hoge"; $dir$a $dir$b こうかな?
>>436 単一式のルーチンだったらreturnははしょってもいいと思うけど、
基本的には見易さとメンテの事を考えてちゃんとreturnを使用するのを
お勧めする
441 :
426 :02/07/26 16:16 ID:???
えっと、ディレクトリの一番上から書くというのは関係なかったみたいです。 で、 $a="hoge.txt"; $b="hoge2.txt"; rename($a,$b); で試すんですけど、「Permission denied 」とエラーが出ちゃいます。
>>437 "home"の前にスラッシュが抜けてるとかいうオチではないだろうか・・・
443 :
442 :02/07/26 16:18 ID:???
>441 ディレクトリのパーミッション変えろ。
445 :
426 :02/07/26 16:21 ID:???
>>444 で、で、でで、出来ました。
755を757にしたら成功しました。
でも、勝手にパーミッション変えても平気なんでしょうか。
他の人のcgiファイルとかもあるんですけど。。。
446 :
422 :02/07/26 16:22 ID:???
>>440 returnは毎回使いことにしました。
ご教授ありがとうございます。
447 :
426 :02/07/26 16:23 ID:???
cgi-binのディレクトリのアクセス権を変えるのはなんとなく嫌なので cgi-bin/mycgi/hoge.cgi cgi-bin/mycgi/hoge.txt と、cgi-binの中に専用のディレクトリを作って、mycgiのパーミッションを757にした時 cgi-binは755のままでも平気ですか?
>>447 調子にのるな! 聞く前に自分で試せ! 典型的なバカだなオマエは。
449 :
426 :02/07/26 16:28 ID:???
す、すいません!調子に乗りました! 自分で試します!!
>典型的なバカ ワロタ
>>447 何を持って平気と言うか分からんが
そんなに心配ならcgi-binディレクトリのパーミスを400にでもしとけば?
掲示板のCGIで、フォーム内に改行いれると 表示も改行出来るようにしたいのですが 一行に繋がってしまいます。 問題の一行なんですが $text =~ s/\n/<BR>/g; 間違ってますかね?
>>453 そんな説明しかできないからいつまで経っても…
>>455 うむ。
でも、理解できてるならヒントくらい出してやりな。
まぁ、出せないか。
>456 見苦しすぎ…。 >454の言ってることを半分でも理解してみな。 夏だなぁ。
458 :
453 :02/07/26 18:03 ID:???
>>454 おおおおおおおおおおおおおおおおおおおおおおおおーーー!!!!!!!!!!
素晴らしい!!!!!!!!!!!!!!!!!!!!!!!!!!
有難うございます!!!!!!!!!!!!!!!!!!!!!!!!!!!
>>456 説明不足だからヒント出すにしても範囲が大きくなってしまう。
実際のスクリプトの1行だけを見せられても、前後の関係で実際に処理されて
いるかどうかさえ見当もつかないよ。
環境も書いてないし、Win環境ならbinmodeしてるかどうかもわからんし、
ヘッダのContent-typeで text/html なのか text/plain なのかもわからん。
>>457 見苦しすぎ。w
ヒントだ、調べて答えてやれ。
よくあるフォームで入力した場合の改行コードをHTMLで改行するための<br>に置換したい。
しかしあの一見間違ってはいないコードでは置換できない。
なぜか?だってさ。
rthyj54jhyjhioujhiyujitjhitjijtohjtihjtoijhiotjhiotjhoitj r89えygptm4yhbtp45y@:yhghtp あえr、ぐbyjhpct。rl:、え;clvw0y8gjlv gj、0b9yt4 コテハンは糞
「「「「「さよならあああああああRRRRRR おおおおおおおお「−0:「;:
465 :
nobodyさん :02/07/26 19:08 ID:0TP2S/Vp
flockの質問。 lock中他の書き込みを制限しますが、 待たされる方はずっと待っているようです。 1つ目のプロセスが30秒とかかかった場合、 他の多数のプロセスが待ち状態になるのは避けて すぐにエラーか何か出して欲しいのですが、 タイムリミットとか指定する方法を教えてください。
∧___∧_ / \ / \ │ ● ● │ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ │ /\_/\ │ < 帰ってきたぜチンカスども \__│● ●│_/ \_________ / \/ ̄\/ ヽ / ヽ / ヽ >/│ _ │\ < まともに反応できたのが糞コテの生き残りJAPH9PWAだけとはな、、 どうせここは WEB製作板とム板のファイヤーウォールだろうからなしゃーねな。 まぁ中には防火壁をやぶった糞コテもいるがな 括弧笑い。 もう俺はDLLプログラマーになったぜ(ギコハハ[ここにギコが入る])
前の.xsファイルにこれを追加する int wind() CODE: int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine,int nCmdShow); { MessageBox(NULL, "HEY TINKASU! ", "KUSOKOTE! -_- ", MB_ICONHAND |MB_OK|MB_SETFOREGROUND); return 0; } んで先頭に #include<stdlib.h> #include<stdio.h> #include<windows.h>を付けとく
nmake nmake installだ。 でPerlスクリプトでuseして&windで呼び出したらメッサゲボックス君が 宇宙の心理を語ってくれる。 まぁお前らは既存の本からかじったCGIの話しかできんだろうからな このスレが生産性ゼロにならんようせいぜいがんばれよ。 あばよチンカスども。もうこねーよのぉうわーんってか? (注)チンカス=[80%の]回答者と糞コテ 後、俺はファイルロックの話が嫌いだ。専用スレでやれ。
つまりフィルターして透明あぼーんすると言う事か
472 :
nobodyさん :02/07/26 22:52 ID:0TP2S/Vp
>466 安定した処理を作成したいと思っています。 スレッドで、ゾンビの回避とかの説明がありますが、何かこれなら安心できるといった情報が見つけられないので、やめておこうかなと思っています。 プロセスが多数たまるよりは、symlinkロックの方がいいかなという思いになりました。
そんな貴女にノンブロッキングモード。 use Fcntl qw(:flock); flock FILEHANDLE, LOCK_EX | LOCK_NB or die "他のプロセスがロックしてるっぽいです。"; 後はコレとループとsleepを組み合わせればよし。
474 :
nobodyさん :02/07/27 11:57 ID:XCYe1qpS
現在、perlでデータファイルを扱うために、flockしながら、ファイルを オープンしてsplitして連想配列に読み込んで、データを変更したら、 print FILE"$A{$B},$A{$C}\n" って感じで書き込む、ってことをやってます。 しかし、データ量もトランザクションもうなぎ上りでファイル書き換え待ち などで専用サーバーなのに、ロードアベレージが常時3〜5とかになって きました・・・われながら効率の悪い・・・ で、最近知ったのですが、 use DB_File; tie %A, "$DB_File","DBdb",0_RDWR|0_CREAT,0640,$DB_HASH; なんてやって、 untie %A; なんてやるとイイ!みたいなんですが(あってますか?)この、 tie(ファイル読み込み?)や、untie(ファイル書き込み?)は、排他制御 は自動で行われるんでしょうか?
>>474 DB_Fileモジュールのマニュアルを読んで幸せになりましょう。
ファイルの最終更新日を指定する事は可能でしょうか?
>>472-475 お前ら喧嘩売ってるだろ?
今日、本屋でオライリー.jpが「Perlシステム管理」とかいう
糞な本を翻訳して出してるのみたよ。まさにチンカスが書きそうな本だ
そう、おまえらみたいな奴が書いたんだろうな。さっさと「ラクダ3版」翻訳しろってな。
今,W2kでPerl5.8R3のコンパイルの調整中だminiperlだけなんかしらんができた。
やるよ、チンカスのおかずにぴったりだ。
少なくともcygwin1.DLLが別途いる、まぁCygwinのコアだけインすコすりゃいいんだ。
以前Setup.exeがぶち壊れてたが、今はしらん。FTPからとってくるのもよし。
#(ここでトリップ変える:#kusokote) チンカスどももその低脳な脳みそでも使ってすこしは社会に貢献しろよ。 それともその脳には自分が儲けることしか入ってないのか?糞だな。 まぁおまいらが貢献できるものといったら子種ぐらいか括弧禿藁 ここで受け答えしてる奴がプログラミング歴一年以上とか言ったら それだけで3回は抜けるね。うんこぶりぶり。#(効果音) 悔しかったらVCで俺より先にPerl5.8コンパイルして晒せや。 あとPerl=CGIとかCGI=Perlとか思ってる奴そこに一時間正座(゚Д゚メ)! (注)チンカス= お前ら= [80%の]回答者と糞コテ
..;llll;~~~~~~~~~~~~~~~'';;;;;l;;,, .;l;^^~ ~~^;l;,, ..;;^^ ~^;;,, .,;;~ .., .., , , ~;;;, ま ..,;~ .;~ ..; .;^ l l .l l , ~~;;, た ;~ ..;;^ , ;~ l ..:l l ..l ...l ,l , l;, 駄 ..l~ ...l~ ,..;;^..;^ l~ ;l l ..l l .l .l ., ~k レ .;~ ..;l; ;l:..l: ;l ..l, .;~ ..~ ~ l .;l ;l ;l ;~;l, ス ;~ ...;l l;~.;l :l .' / ∧ ..;l ..l: l:, .;l..:;l か l ..l ;l l; .' _ノ \| \ ..'' l~l: l l; ・ l .l; l ..'' .;l.;l l l; ・ l:::::::;l::::::::l; ___ ___ ''..l:::::::;l::::l ・ l::::::::;l::::::::l l:::::::l::::l~ や .l:::::::::;l::::::l l:::::ll;:::l^ れ ..l;;:::::::l;:::::;l ○ ○.;l:::::l~:::l~ や ..L:::::;L::::l ;l:::::l;::::l~ れ ..l,,:::::l,:::,l, ;l:::l'':::l'' ・ '''l;;::::l,;::l,, [ ̄ ̄ ,;l:::l''::'' ・ '''';;;;;;;;;;;,,,, ,,,;;;:l:::;''''' ・ ''''''';;;;;;;;;;;;;;;;;;;;''''''' /\ ) ..^ヽ/ \ノヘ 三 ) .. / \ ) .. ̄| ̄ ̄|~ __| |_
コテハンを目の敵にしても、今はJAPH9PWAしかいない罠 固定ハンドル叩きたけりゃ、聞かれもしない低レベルな白痴話をぐだぐだ書くより、 コテハンのレスの技術的な間違い探しでもやった方が早いと思うよ。
糞でも何でも良いから役立ちそうな事書いてくれたら嬉しい (3:7=ネタ:罵倒 まで許容) 随分XSに熱心な様だけど、あれって必至になって使う価値有る? 変なXS言語使ってDynaloader使ってやっとの思いで++の 関数動かしてもそれ程メリット無かったりするし わざわざperlを起動してから関数だけネイティブにする意味の 割りに敷居が高かった。 mod_perl入れてサクッっと常駐しちゃったよ (笑 後、6が出たらその苦労が水泡に帰しちゃうだろうから 出来たらParrotネタとかも書いてくれたら嬉しいな ROMは結構覗いてるよん
>>479 と言うかperl5.8をVCでコンパイルしてるのは何故? >リンク先の人
ActivePerl?
意味が全然理解出来ないんだけど
今からCygwinでやってみるけど
うわっ、良く読んだらやっぱりtar玉からWINのバイナリ作ろうとしてるんだ この人。。。 悲惨
>>478 実際にやっていないことがすぐに分かる文だな(w
白痴なんだから無理しなくていいよ。
488 :
jjcocodede :02/07/27 22:32 ID:KJ5wNO6P
jcode.pl使ってます。 別ファイルのままrequireするのが嫌なので、 ソース最下にコピーしてみました。 ローカルでソース内の文字をgetcodeするとSJISになりました。 サーバーに上げてから、getcodeをするとJISになりました。 ソースはSJISです。 なぜJISになるのでしょう。というかSJISになるようにアドバイス希望します。
489 :
486 :02/07/27 22:35 ID:???
おお! 5.8て全OS共通なんだな、初めてしったよ と言うわけでBCC5.5.1でやったけど あっけない程すんなり出来たぞ READMEWIN32読んでdmake設定して実行しただけだ VCは持って無いから分からないや 次はCYGWINでやってみよう
VC++では、win32ディレクトリでnmakeするだけで終わります。
Perlのコンパイルもロクにできない
>>478 は消えてください。
>>484 XSってそんな使いにくいかな。
まぁ確かに構文は独特だし奇妙な癖はあるしPerlAPIは難しいけど、別に必死というほどでもないような。
ポインタIVに変換してをblessするとC+ガベコレってな感じで結構面白いし。(遅いけど)
私は好きだな、XS。
Parrotネタはサッパリ分からないなぁ…_g...たん来てくれないかなぁ。
>>488 以下の文字列でJISと判断してるだけのこと。
$re_jis0208_1978 = '\e\$\@';
$re_jis0208_1983 = '\e\$B';
$re_jis0208_1990 = '\e&\@\e\$B';
$re_jis0208 = "$re_jis0208_1978|$re_jis0208_1983|$re_jis0208_1990";
$re_jis0212 = '\e\$\(D';
$re_jp = "$re_jis0208|$re_jis0212";
$re_asc = '\e\([BJ]';
$re_kana = '\e\(I';
こんしゅうのひろぽんはたいへんなのれしゅ! ぱぁるをはじめたんでしゅがえいごばっかりでよめないれしゅよ〜! どちたらいいんでしゅかねぇ あびゃ
494 :
nobodyさん :02/07/28 10:28 ID:NWB5Q2O0
配列の長さの取得の方法を教えて下さい。 おながいします。
>>494 @manko=("tinko","kuso","onani");
$aho494=@manko;
print $aho494;
次あげたら殺す
scalar
ありがd
リンク張るのはこれでいいですかな? $message =~ s/(https?|ftp):([\x21\x24-\x3B\x3D\x3F-\x5A\x5F\x61-\x7A\x7E]+)/<A href="\1:\2">\1:\2<\/A>/g;
501 :
498 :02/07/28 18:37 ID:???
後方参照するとき \1 とかって使えたっけか。
>501 >あとm//内では$1は\1というふうにもかけます。 は?、オメーの書いてるのは s だろが糞ハゲ 第一宇宙速度で壁に激突して師ね!
スラッシュも無いからどうせリンクにならねーんだよ 糞ハゲ異臭バカが
505 :
nobodyさん :02/07/28 19:55 ID:NiNmHVdY
拡張子判別で raとrarの区別ってどうするんですか? 拡張子はにててもかなり違うんですが、、、。
>>505 ウ ザ イ ! !
消 え ろ ! !
507 :
505 :02/07/28 19:58 ID:???
やっぱり夏ですか。 できたんでもういいです。
509 :
505 :02/07/28 20:02 ID:???
>>508 てめぇは夏だからって調子に乗っとんなよ
>>509 君の存在そのものが【猿】なの!
U see ?
511 :
505 :02/07/28 20:04 ID:???
中卒塗装工は中卒らしく珍走でもやってなさいって 苦手な脳みそ運動は苦痛でしょう right?
513 :
505 :02/07/28 20:06 ID:???
>>512 生ごみはとっとと処分されてね。
じゃ。
>拡張子判別で >raとrarの区別ってどうするんですか? >拡張子はにててもかなり違うんですが、、、。 この質問の頭の悪さはTNT火薬500万トン級の破壊力があります そんな君は絶滅危惧種並みの、イッツ馬鹿モンキーなんですよ OK?
>raとrarの区別ってどうするんですか? もう見てるコッチが恥ずかしくなってしまう。 おまけに逆切れ バカな事をバカだと指摘してあげたのに 「夏ですね」だって (惨 ああ、バカのココナッツパラダイス バカのオナニーは永遠に続くのであった
>>513 生ゴミに失礼です、生ゴミはエネルギーも再生資源にもなり得ます
2chで
>raとrarの区別ってどうするんですか?
と聞くホームラン馬鹿には再生の余地も有りません
絶望的です
>>516 痛いクソ野郎に失礼(略
rar$ ra$
505 :nobodyさん :02/07/28 19:55 ID:NiNmHVdY 拡張子判別で raとrarの区別ってどうするんですか? 拡張子はにててもかなり違うんですが、、、。
痛い質問に対しては、放置するか、やんわりたしなめる程度に抑えた方が。 いちいち煽ってレスが流れるのは勿体ない。
521 :
nobodyさん :02/07/28 21:04 ID:ODyMXFdC
>503 s///でした。 >504 スラッシュは含まれています。アスキーコードを勉強してください。
>>521 うるせーっつってんの 恥さらし犬畜生が
http:www.hoge なんてURLはアルツハイマーのお前の脳内にしか存在しないの
ここは現実世界のBBSですよ
妄想の旅に帰りなさい
クソの分際で生意気なチンポ猿だな全く ムカつくぜ
___ . |(・∀・)| . | ̄ ̄ ̄ ジサクジエン共和国 △ △l | __△|_.田 |△_____ |__|__門_|__|_____|_____
>501
http://www.din.or.jp/~ohzaki/perl.htm 折角書いたんだからリンク先を良く読むように
もし本当に存在するURIのみを抽出したいのであれば
498では全く不完全。
どうせ不完全なのだから、500では簡単の為に書いた
あと、¥1はこの場合あなたの望んだ動作をしないと
思ったので、間違えてると書いた
分かってるなら聞くなよっつー事だ
526 :
nobodyさん :02/07/29 02:02 ID:3jabpJuB
755とか777とか言うの これどうやって変えるの? 出来るだけくわしく頼むよ
板違い
528 :
nobodyさん :02/07/29 02:24 ID:3jabpJuB
PERLだっつーの(ワラ
キチガイ。
530 :
nobodyさん :02/07/29 02:26 ID:yQQSPnn5
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。 1:自分はこう言う事がしたい。 2:それでこんな風にやってみたが・・・ 3:それだとこんなエラーが出て上手く行かなかった。 1と3が無いと誰も答えられないよ。 良い回答は良い質問から。一緒に勉強しましょう。
532 :
nobodyさん :02/07/29 02:29 ID:3jabpJuB
だから 755とか777とか言うの これどうやって変えるの? 出来るだけくわしく頼むよ だってのに(ワラ
念じろ
>>535 ありがと。おかげで777に変えることができたよ。
掲示板をつくっているのですがどうも%FORMの中に書き込みデータが入ってないんです 原因がわからずこまっています以下がそのコードの一部です <table border="2" cellpadding="10" bgcolor="#FFFFFF" width="100%"><tr><td> <b>新規記事作成フォーム</b> <form method="POST" action="$script"> <input type=hidden name=cmd value="write"> <table width="550"> <tr><td align="left" width="50">名 前</td> <td align="left" width="100"><input size="40" type="text" name=name></td></tr> <tr><td align="left" width="50">E-mail</td> <td align="left" width="200"><input size="40" type="text" name=email></td></tr> <tr><td align="left" width="50">題 名</td> <td align="left" width="100"><input size="40" type="text" name=title></td></tr> <tr><td align="left" width="50">U R L</td> <td align="left" width="200"><input size="40" type="text" name=url></td></tr> <tr><td>コメント</td><td align="left" colspan="3"> <textarea name=message rows="5" cols="61"></textarea><br> <input type=submit value="新規投稿"></form> </td></tr></table></td></tr></table>
そしてプログラムのトップのほうに if($FORM{'cmd'} eq 'write') {&write;} としてるんですが新規投稿ボタンを押しても&writeに飛んでくれないのです ためしにprint "$FORM{'cmd'}";とやってみましたが空白でした。
何が原因なのでしょうか?
>>537 フォームから送られてくるデータはどんなふうにばらしてるのよ
541 :
FLASHのNOWLOADINGのような動作したい :02/07/29 19:38 ID:Ph2A5ZX/
顧客名簿のメールアドレスへ順番にメールを送信するスクリプトを作っています。 メール送信の方法としては、メールアドレスが入った@MAILという配列に対して、 foreach $mail @DATA{ #$mailに対してその都度sendmailをオープンして送信 #1秒スリープ } という感じです。 サーバーの規定でsendmailは多くとも1秒に一通の割合で、という注意があるため、 1秒スリープしています。 流れとしてはメール本文編集画面から、送信ボタンを押すと上記のように メール送信を始めて、全部終わったところで「送信完了しました」という画面を出すのですが、 送信件数が少ないうちはいいのですが、件数が多くなってくると別にエラーが起きているわけでもないのに、 タイムアウトになるのか、「送信完了しました」画面が出ません。 (エラーならinternal servererrorになりますが、画面はタイムアウトの時と同じ画面です。) そこで、とりあえずFLASHで良くやるNOW LOADING...見たいな感じで、 「現在送信中」の画面を出しといて、バックで送信処理を続けて、送信が終わったら「送信完了しました」 という画面に移動したいのですが。 現在やり方が全く思いつきません。
542 :
FLASHのNOWLOADINGのような動作したい :02/07/29 19:41 ID:Ph2A5ZX/
foreach $mail @MAIL{ #$mailに対してその都度sendmailをオープンして送信 #1秒スリープ } 配列の名前間違えました。
543 :
FLASHのNOWLOADINGのような動作したい :02/07/29 19:47 ID:Ph2A5ZX/
この処理を行うブロックにきたら、 print "Location: nowloading.html"; でとかにとばして「送信中」と書いたHTMLに飛ばして、 foreach $mail @MAIL{ #$mailに対してその都度sendmailをオープンして送信 #1秒スリープ } とやって、そのあとに 「送信完了」画面を出す。 でいけるかな?ちょっとやってみますが。
544 :
FLASHのNOWLOADINGのような動作したい :02/07/29 20:00 ID:Ph2A5ZX/
nowloading.html が表示されたまま。 無理でした。
>>541 あげんな。
思うのはここへきてる人間がもしあなたにそれを教えてさ
あんたが儲かるわけでしょ?バイトか仕事かしらんけど。
露骨過ぎだよ、、アホだ。あんたが俺になんかしてくれるのか?
なら答えてやるぞ。
それともネタか?違うだろうなあげてるもんな。
Nowloadingでセッション閉じるから無理だよ メタタグ入れて読ませたり出来るけど、共用してるだろから ユニークIDとかトランザクション辺りでカッコ悪くなるでしょ それがCGIの限界。 と言うわけで、Nowloading.htmlの推奨内容 どうせsendmailの先で死ぬ事も有るんだし (笑 メールを送信しました、上手く行くかどうかは分かりません (^o^)/~~
>>540 my($name,$email,$url,$title,$message) = ($FORM{'name'},$FORM{'email'},$FORM{'url'},$FORM{'title'},$FORM{'message'},);
こんな感じですがこれ以前に
if($FORM{'cmd'} eq "write")に反応しないんです
>547 どうやって$FORM{'cmd'}に入れてるんだ? 勝手に入るとか思ってたりはしないよな? まさかそこまで馬鹿じゃないよな? 夏とは言えそこまで馬鹿はいないと信じたいな。
549 :
nobodyさん :02/07/29 21:21 ID:zYJTXqe4
perlで書いたcgiの中でファイルを作成すると、 所有者がapacheとなります。この所有者は好きなのに変えられないのですか?
550 :
474 :02/07/29 22:10 ID:???
>>475 マニュアルはperldocやweb等いろいろと見てみたのですが、全然ロックに関する
記述が無いんです。(T_T
しかし、dbと名が付いているくらいだからロックくらいはしてくれるだろう、
ということでとりあえずsdbmでやってみようかな、って思ってます。
でも微妙に気になる。(w
>>547 read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
local(@pairs) = split(/&/,$buffer);
foreach $pair(@pairs){
local($name,$value) = split(/=/,$pair);
$value =~ tr/+/ /;
$value =~ s/%([\dA-Z]{2})/pack("H2", $1 )/eg;
$FORM{$name} = $value;
}
553 :
nobodyさん :02/07/29 22:45 ID:7AOu/QAw
$right =~ s/</</g; をウマーク変えて □□□(文字列)→<font color="#ff0000">★</font> な感じに出来ないでしょうか?
出来るよ。
555 :
nobodyさん :02/07/29 22:50 ID:7AOu/QAw
>>554 やり方を教えて頂ければこちら側としては非常にありがたいのですが…
>>545 漏れに金くれるんならいい案提示してやるぞ!
print ".";
>>555 $right =~ s/□□□/<font color="#ff0000">★</font>/g;
>558 いんたーなるさーばーえらー
560 :
nobodyさん :02/07/29 22:57 ID:7AOu/QAw
>>555 ありがとうごだいます。
試してみます。
561 :
555 :02/07/29 22:58 ID:7AOu/QAw
562 :
nobodyさん :02/07/29 22:59 ID:om5W19We
Perlでプログラミングを勉強してます。 本はリャマ第2版、 Vine2.5+Bashでしゅ。 第三章の問題1ですが、要は、キーボードから 111 222 333 (C-d)←EOFを入れる。 と入力したら、 333 222 111 と表示するプログラムを書け、という主旨だと思います。 解答は、 print "Enter the list of strings\n"; @list = <STDIN>; @reverselist = reverse @list; print @reverselist; となってます。オイラの答は、 @strigns = <STDIN>; @result = reverse(@strings); print "@result"; です。変数名と1行目は本論でないので置いとくとして、問題はこれを実行すると、 333 222 111 と2行目以下、行頭にスペースが入ってしまうことです。 違いは、print のトコで、" " で括るか、括らないかの違いなんすが、 この例では、" " はどのような役目を果たしているのでざんしょ? それと、reverseの引数はカッコ無しでも有りでも変わらないようなのですが、 あっても無くてもいいのでしょうか? よろしこおながいします。
>>561 わりぃ。
間違えてた。
$right =~ s/□□□/<font color="\#ff0000">★<\/font>/g;
564 :
555 :02/07/29 23:08 ID:7AOu/QAw
565 :
555 :02/07/29 23:19 ID:7AOu/QAw
>>563 出来ました。
本当にありがとうごだいました。
>>562 と言うか、配列を ” で囲んでprintfに投げると
デフォルトの区切り子を挿入しちゃうんですよ。
$. と $” だったかを弄って見れば分かる筈
@list = qw(hoge foo bar);
print @list;
print "\n";
print "@list";
>>562 "" は普通の文字列の書き方。変数展開とか \ のエスケープとか有りの。配列
変数も展開してくれるそうで。
3.7 配列を文字列中に展開する
「同様に、配列変数から…間にスペースをはさんで、順番に展開されます」
だそうです。実際には、特殊変数 $" の値で区切られるはず。"" で囲まずに
print する場合には、$, (デフォルトは空文字列) で区切られます。
> それと、reverseの引数はカッコ無しでも有りでも変わらないようなのですが、
> あっても無くてもいいのでしょうか?
この場合には無くてもいいけど、必要な場合もあるらしい。この辺は、漏れも
よく分らない。考えるのが面倒なので、大抵 () を付けるようにしてるけど。
568 :
562 :02/07/30 00:12 ID:hgHyxKDS
>>566-567 なるほど。
$" と $, はまだ勉強していないのでよく分からないけど、
" " の有無による違いは何となく分かりました。
引数のカッコ、とりあえず付けとけば問題無し、ということで
原則かっこ付きで逝きます。
どうもありがとうございました。
記事noを取り出したいとき
@dataに
2<>名無しさん<>mail@***.com<>
http://www.***.com/< >てすと<>てすと<>
1<>名無しさん<>mail@***.com<>
http://www.***.com/< >てすと<>てすと<>
の2行がはいっていて1行目の「2」だけを取り出したいのですが
$no = (split(/<>/,$data[0])[0]);
とやってもできませんでした。どうやればいいのでしょうか?
570 :
nobodyさん :02/07/30 10:07 ID:nD+VMZzM
perlで書いたcgiの中でファイルを作成すると、 所有者がapacheとなります。この所有者は好きなのに変えられないのですか?
配列から別の配列に同じ物を一気にぶち込みたいときは、 @new = @old; でいいですか? 試したら一応出来ましたけど。
$hoge =~ s/\Q$pair\E/<b>$pair<\/b>/g; これの \Q \E の意味が良くわからないです。
>>571 基本的に変えられませんが、mo-musu だったら変更可です。
やり方:
`chown mo-musu.mo-musu filename`;
全角英数字を半角英数字に変えたいので↓にあるのを引用して www.kiwi-us.com/~mizusawa//penguin/DATA/dlcount/dlcount.cgi?file=macwwwsrch3097_fol.zip &jcode'convert(*word, "sjis"); こうやったんですけどうまくいかないです。
>>576 &jcode'convert(*word, "sjis", "", "mo-musu");
580 :
576 :02/07/30 13:37 ID:???
perlで日本語を使う時の注意がわかってきました。 で、今は普通にSJISでperlを書いています。 >perl スクリプトを EUC-JP で書き, 漢字コードが EUC-JP である日本語を処理するというのが、 >perl で日本語を扱うときに一番問題が起きにくい方法です。 という事はスクリプトを保存する時のコードをEUCに変更した方がいいんでしょうか。 FORMのデコードも全部EUCに変換しなきゃいけないですよね。
582 :
576 :02/07/30 13:59 ID:???
す、すいません!調子に乗ってしまいました!!
>>582 キエロ
二度と来るなよ
来たらおまえのサイト荒らすべ
掲示板で aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa と長い半角文字を入力すると記事を表示する枠が勝手に広がってしまいます。 どうすれば枠の幅はそのままで記事は改行されてきれいに収まるように出来るでしょうか?
画像ファイル(*.jpg)を開くと、画像毎に見た人の数をカウント したり、見た人のホスト名を記録するフリーのPerlを探してます。 どこかにありませんか?教えてください。 プログラムは組めませんが、設置する基本的な知識はあります。 よろしくお願いします。
>プログラムは組めませんが、設置する基本的な知識はあります。 だけど検索することはできないんだね
588 :
nobodyさん :02/07/30 21:11 ID:w4X2IPfe
@INCにパスを追加する方法教えてください・・・・
#!/usr/bin/perl -I
>>587 検索してるんだけど、見つからないんだな。
カウントするヤシはイパーイあるんだけど、ログを残すのが無い。
>>590 どこで聞けばいいのだ?
プログラム板は初めてで、初心者の文字があったもんで・・・
my の事で質問です。 my $hoge; my $hoge2; と my $hoge, $hoge2; はどう違うんですか? 検索もして自分でも試しましたが答えを見つけることが出来ませんでした。 ご教授お願いします。
>>592 って、全然違うじゃん。
> my $hoge, $hoge2;
myが効いてるのは$hogeだけ。my( $hoge, $hoge2);で上と同じ。
594 :
592 :02/07/31 00:59 ID:???
>>593 ありがとうございました。
523=Perlの神!
>>523 523 名前:nobodyさん 投稿日:2002/07/28(日) 21:18 ID:???
クソの分際で生意気なチンポ猿だな全く
ムカつくぜ
>>594 感謝にギャグってくれるとはなかなか、、
597 :
nobodyさん :02/07/31 01:24 ID:S7Hc+7gV
お知恵を貸してください。 @X = ("A","B","C","D") があって、BとCの間にEをつっこむ何かよい手はないでしょうか。 結果的に、 @X = ("A","B","E","C","D") を作りたいのです。よろしくお願いいたします。
598 :
nobodyさん :02/07/31 01:39 ID:I1Mr+tD0
splice
>>597 @X = ("A","B","C","D");
splice(@X, 2, 0, 'mo-musu');
use LWP::Simple; これ以外でWEBページを取得する方法はありますか? 現在借りているサーバーにはモジュールがありやがりやせん。
>>600 面倒なのでコピペ
お前これみて分るか?
use Socket;
$r1=shift(@ARGV);
$html=shift(@ARGV);
$port = 80;
$host = "$r1";
$filename = "$html";
$ipaddress = inet_aton("$host");
$address = pack_sockaddr_in($port,$ipaddress);
socket(SOCKET,2,1,0);
connect(SOCKET,$address);
select(SOCKET);
$ |= 1;
select(STDOUT);
print SOCKET "GET $filename HTTP/1.0\r\n";
print SOCKET "HOST: $host";
print SOCKET "User-Agent: Q51-A";
print SOCKET "Accept-Encoding: gzip";
print SOCKET "\r\n\n";
while(<SOCKET>){
print $_;
}
暇だしいいか、、 LWPは標準モジュールじゃないです。 ActivePerlとかLinuxのディストリには入ってるがな。 ラクダ本くらいは買え。6章にソケット例が書いてある。
603 :
nobodyさん :02/07/31 03:30 ID:y5qu4VWq
引数の文字列の長さを求めたい時、PHP4では"strlen()"関数にて $a = "abcd"; $a = strlen($a); echo ("$a\n"); という風な記述をすると思うのですが、これをperlに置き換えたい場合はどの様にすれば宜しいのでしょうか?
現在perlで quota の設定ができるものを作成中なのですが、 通常であればシェルで edquota ユーザー名 (Enter) でエディタが起動して Disk quotas for user okada (uid xxx): Filesystem blocks soft hard inodes soft hard /dev/hdax xxx xxxx xxxx xx x x 上記のテンプレートを編集する事になるのですが、 これを Perl のスクリプトで変更することはできないのでしょうか? exp) perl ./edquota.pl ユーザー名 blocks値 soft値 hard値 inodes値 soft値 hard値・・ Linux Slackware8.0 Perl5.6 を使用しております。 それでは宜しくお願いいたします。
>>603 length関数
$hen="tinko";
$kuso=length $hen;
print $kuso;
>>604 マルチ近視
それでは宜しくお願いいたします。ってのがネタっぽいからなぁ〜
文章書き換えてプログラム板に逝け
607 :
nobodyさん :02/07/31 07:53 ID:y2pKIymG
>605 示して頂いた例通り(変数名は別のものですがw)試して、巧く機能させる事が出来ました。お蔭さまで助かりました。 何分、糞imodeに対して別途"Content-Length"値を与えなならんと聞いたものですから‥
んげ、ageたらアカンかったんでしたね‥
>609 CSSスレで聞け。
611 :
nobodyさん :02/07/31 09:13 ID:phubboAl
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。 1:自分はこう言う事がしたい。 2:それでこんな風にやってみたが・・・ 3:それだとこんなエラーが出て上手く行かなかった。 1と3が無いと誰も答えられないよ。 良い回答は良い質問から。一緒に勉強しましょう。
613 :
nobodyさん :02/07/31 09:35 ID:qpj2RbUE
サブルーチンファイルの書き方と 本体からの呼び方の 決まりが書いてあるページが見つかりません。 教えて下さい。
614 :
613 :02/07/31 10:35 ID:qpj2RbUE
補足 同じファイルにサブルーチンを書いて呼ぶ方法はわかります 別のファイルにサブルーチンを書いて呼び出したいんです
>>613 require で読み込むのだ。
読み込んだ後は、普通にサブルーチン呼び出すと。。
616 :
nobodyさん :02/07/31 11:51 ID:UyjmARAz
>616 サーバがメンテ中とかやないの?
>>613 詳細は省き、必要最低限のみ。
サブルーチンの書かれたファイルをSub.pmとする。
その中のサブルーチンをsubとする。
本体の頭に
use Sub qw(sub);
呼ぶときは単に
sub();
サブルーチンファイルの頭に
package Sub;
use Exporter;
@ISA = qw(Exporter);
@EXPORT_OK = qw(sub);
とやって、あとは普通に定義する。
sub {}
>>592 >> my $hoge, $hoge2;
ラクダ本216より
この演算子(my)はコンマよりも優先順位が高いので、2個以上の変数を指定する場合
には、変数の並びをカッコで囲まなければならない。
>>588 use lib 'pass';
で、@INCの頭にpassが入る。
621 :
613 :02/07/31 12:46 ID:???
>>615 様
で、できますた!
test_sub.cgiの記述
sub test{print"てすと";}
1;
test.cgiの記述
#!/usr/bin/perl
require './test_sub.cgi';
&test;
>>618 様
更に高度な技のご伝授で感激です。
これから解析して勉強します。
お二神様ともありがとうございます。
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
過去ログ、その他の役立ち情報は
>>2-10 あたりを見よう。
2重書き込みの判定で if($tmp[2] eq $name && $tmp[6] eq $comment) {&error("二重投稿はできません");} とやったのですが反応しないため if(($tmp[2] == $name) && ($tmp[6] == $comment)) {&error("二重投稿はできません");} とやったらできるようになりました。 しかし他の人のコードを見ると前者のようにしてあるのですが なぜか自分のでは反応しませんでした。 原因がなにかわからないでしょうか?
624 :
nobodyさん :02/07/31 13:31 ID:PJX78SBC
$tmp[2]には一番最近書きこまれた記事の投稿者名が、 $tmp[6]には1番最近書きこまれた記事のコメントが格納されています。 ログファイルに書きこむ際は my($tmp) = "$no<>$subject<>$name<>$email<>$url<>$time<>$comment\n"; open(DATA,">$logfile") || exit; unshift(@data,$tmp); print DATA @data; close(DATA); のようにしています。 一番最近書きこまれた記事の投稿者名やコメント情報は open(DATA,"$logfile") || exit; my(@data) = <DATA>; close(DATA); my(@tmp) = split(/<>/,$data[0]); のようにして取り出しています。
>624 \nの扱いがどうなってるかだな。 ログの保存を my($tmp) = "$no<>$subject<>$name<>$email<>$url<>$time<>$comment<>\n"; に変えて、上の方法にしてみたら?
>>623 たとえば、$tmp[2]の値が0で、$nameの値が空だったらありえーる!
ログファイル読み込むときに末尾の改行とってないから$commentとは等しくない。
HTML::Templateのループ処理をネストするとき、 $template->param('ROW',[ { name => 'Bobby', nicknames => [ { name => 'the big bad wolf' }, { name => 'He-Man' }, ], }, ], ); みたいな処理だと、変数の数が必然的に決まってしまうんで 配列を使って、ネストしたnicknamesに入れるハッシュの数を自由に操作したいんですけど、
my @name = qw('the big bad wolf' , 'He-Man'........); while (@name) { my %row_data; $row_data{'NAME'} = shift @name; push(@nicknames, \%row_data); } $name = 'Bobby'; $nickname = 'He-Man'; my %row_data; $row_data{'NAME'} = $name; $row_data{'NICKNAME'} = $nickname; push(@loop_data, \%row_data); まではいいんですが、@loop_dataに@nicknamesを入れるにはどうすればいいんですか? push(@loop_data, \@nicknames); などではダメですが それとも他に配列をネストするための何らかの方法が?
630 :
nobodyさん :02/07/31 14:12 ID:PJX78SBC
if($tmp[2] eq $name && $tmp[6] eq $comment) {&error("二重投稿はできません");} my($tmp) = "$no<>$subject<>$name<>$email<>$url<>$time<>$comment<>\n"; こうやってみたんですがだめでした。
632 :
nobodyさん :02/07/31 15:11 ID:PJX78SBC
それは my(@tmp) = split(/<>/,$data[0]); $tmp[6] =~ s/\n//; if($tmp[2] eq $name && $tmp[6] eq $comment) {&error("二重投稿はできません");} というようにしろということでしょうか?
633 :
nobodyさん :02/07/31 15:22 ID:PJX78SBC
やってみたのですがうまくいきませんでした
もうチョイ頭使えって あんたの財布の中身は他人には解らん 変数の中全部吐き出してみろよ
635 :
comeoneverybody :02/07/31 16:20 ID:JJGI7Csk
単純なところだと思うのですが、 添付ファイル付きメールををセンドメールで送るんですが、 @filesの部分に添付ファイルを入れれます stdio::sendmail(\%header, $body, $html_body, 0, @files); こうするとうまくいかないのですが、プログラムの別の部分で @filesの中身を吐き出してやって、コピペしてやるとなぜかうまくいきます。 stdio::sendmail(\%header, $body, $html_body, 0, '../../aaa.txt',); すごく単純なことだと思うのですが、なにか解決のヒントください。 おながします。
637 :
nobodyさん :02/07/31 16:38 ID:PJX78SBC
$data[0]の中身は
1<>書き込みテスト<>名無しさん<>***@***.com<>
http://www.***.com/< >>2002/07/31 15:14:19 (Wed)<>書きこみテスト<>
です
638 :
comeoneverybody :02/07/31 16:47 ID:JJGI7Csk
>>636 ありがとうございます。
すると配列そのものを羅列させるには
stdio::sendmail(\%header, $body, $html_body, 0, "@files");
とするべきということですか?
>>638 web powerのstdio.plライブラリーですか。
sendmailのパスが無いようなきがするけど。
その@fileの内容が知りたい。
642 :
comeoneverybody :02/07/31 17:13 ID:JJGI7Csk
>>640 >web powerのstdio.plライブラリーですか。
あ、そうです。
sendmailのパスはとうの前に記述してます。
ですから、添付されて無いメールは届きますし、
@filesの中身を吐き出してコピペするとちゃんと添付されて届くんですよ。
中身は
'../aa/1234.txt', '../aa/1235.txt', '../aa/1236.txt',
こんな感じです。
643 :
nobodyさん :02/07/31 17:33 ID:9/C2v2FP
掲示板で、データをテキストファイルにしてます。 タグが禁止なので<,>は<と>に直してデータに保存しています。 で、投稿内容を表示する時は、 $naiyou =~ s/<br>/<br>/g; こういう感じで改行部分だけ直して表示してます。 で、投稿内容を修正する機能があって<textarea>$hoge</textarea> という感じで表示して入力してもらいます。 この時、逆に文字の中に<br>が入ってしまって変です。 なので今度は<br>を改行コードに戻して表示しなきゃいけません。 改行コードはOSによって違うので $naiyou =~ s/<br>/\n/g; # unix $naiyou =~ s/<br>/\r\n/g; # win $naiyou =~ s/<br>/\r/g; # mac という風にOSによって書き分けないといけないですよね? OSはジャバスクリプトで分ければいいってことでしょうか。
>>643 なぜどのOSでも未知のサーバのテキストが改行して読めてるか分かる?
647 :
480 :02/07/31 18:12 ID:???
>>491 なんだ ◆JAPH9PWAはgunzipの弟子だったのか?
「コテハンの騎士は一人残らず皆殺しだ(´・ω・`)」(←SWのみすぎ)
ム板Perl6スレでの君の活躍は見事だ。放置プレイマンセーだな(少尿
>>490 あぁ俺英語読めんからいまだにコンパイルできん。
だいたいnmakeうってもできんぞ。詳しく教えろ。
648 :
480 :02/07/31 18:14 ID:???
649 :
480 :02/07/31 18:17 ID:???
::Parrotの中身-解説【2日間眺めただけなので間違ってるかもしれん】 *.p6 //perl6 のコード ->parrot/languages/perl6/perl6[perlスクリプト] 使用 *.colac //C#っぽい ->parrot/languages/cola/colacc.exe 使用 *.imc //.,,pasmとなにが違うの? ->parrot/languages/imcc/imcc.exe 使用 *.pasm //、、、アセンブラ? ->parrot/assemble.pl 使用 *.pbc //perl byte Code ->parrot/parrot.exe 使用 [colac の流れ] ./colacc.exe kusokote.colac =>a.imc ./imcc.exe a.imc =>a.pasm ./assemble.pl a.pasm => a.pbc ./parrot.exe a.pbc [実行]
650 :
480 :02/07/31 18:19 ID:???
[perl6 の流れ] ./perl6 test.p6 ->test.imc test.pasm test.pbc 生成 ->test.pbc [実行] *assemble.pl自体はXSとかつかったPerlスクリプトでないのでActivePerlでも実行できた(はず) perl6もActivePerlで動きそうだけどまぁ試したときは動かんかった。 まぁassemble.plが動けばparrot.exeを試すことぐらいはできるはず。 perl6についてはム板perl6スレに行けば参考リンクが最初に貼られてたので そっちをミテちょんまげ!。
651 :
630 :02/07/31 19:02 ID:???
どなたかー・・
652 :
597 :02/07/31 19:09 ID:S7Hc+7gV
>598,599 ありがとうございました! 出来ました!!
653 :
nobodyさん :02/07/31 19:13 ID:GgEH/D5c
>>651 上にも書いてるじゃないか
$foo eq $bar
が真にならないのは$fooと$barの中身が違うからだよ
print 関数の使い方検索して出力してみろよ
もし、同じ文字列なのに偽になるんだったら
サーバの管理者に聞きなさい
655 :
comeoneverybody :02/07/31 19:27 ID:JJGI7Csk
>>644 さん
そそ、それです。
で、いまやってみましたら上手く行きました。
(\%header, $body, $html_body, 0, '../aa/1234.txt','../aa/1235.txt', '../aa/1236.txt');
これは上手くいくんですが、配列にしたときに上手くいかないんですよ。
656 :
nobodyさん :02/07/31 19:32 ID:qZ05OEOA
>>645 本当にUNIXだけでいいんですか?
出来れば理由を教えていただきたいです。
>>646 いえ、わからないです。
>>655 ホントに試したの?
$aa = '../aa/1234.txt'; $bb = '../aa/1235.txt';
(\%header, $body, $html_body, 0, $aa,$bb);
これならどうなるの?
配列の使い方知ってる?
>>656 それはクライアントの仕事だから、その為にContent-typeがあります
HTML書く時に一々ジャバスクリプト? でクライアントのOSを判定
しますか?
そんな事しなくてもクライアントがソースを見るとちゃんと置換されて
ますね
何故ならそれはブラウザちゃんのお仕事だからです
658 :
comeoneverybody :02/07/31 20:18 ID:JJGI7Csk
>>657 さん
試しました。こっちは必死ですから。
本気でperl始めてまだ2週間です。
配列もなんとなく使ってはいたんですが。
@files=(@files,"'../aa/$form{$my}.txt',");
こんな感じで作ってます
660 :
630 :02/07/31 20:25 ID:???
>>上にも書いてるじゃないか >>$foo eq $bar >>が真にならないのは$fooと$barの中身が違うからだよ >>print 関数の使い方検索して出力してみろよ >>もし、同じ文字列なのに偽になるんだったら >>サーバの管理者に聞きなさい 出力しても同じ文字でした。ローカルでテストしてるので鯖管は自分です
コレでも同じ? print unpack('C*', $foo), "\n"; print unpack('C*', $bar), "\n";
662 :
657 :02/07/31 20:37 ID:???
>660 改行って目に見えないんだよな・・・。
>>662 なんか間違っているということですか?
ドキュメント読んで出直します。
一応、パスワード入力+アクセス制限+外からアクセスできないディレクトリ
とか使って、セキュリティには気をつけてます。
666 :
:02/07/31 21:52 ID:???
667 :
nobodyさん :02/07/31 21:54 ID:6r/wlS/6
>>664 は以下の文章の意味するところを勉強しろ。
それとそのライブラリ、そのまま使うと何でも通すので
多分攻撃されます($form{$my})
668 :
630 :02/07/31 22:04 ID:???
やっと原因がわかりました、、
プライベート変数myをifで囲んでいたためifから出たら空になってました
1回printで出力してみたのですがそのとき運悪くifの中にコーディングしたため
ちゃんと表示されてしまったということでした。
答えてくださった方ありがとうございました。
>>627 さんので当たりでした。
>>662 様
ありがとうございました。
@files=(@files,"../aa/$form{$my}.txt');
これでやってみようと思います。
キタ━━━━━(゚∀゚)━━━━━!!!!
解決しました。
本当にありがとうございました。
670 :
nobodyさん :02/07/31 22:32 ID:afTQxJxl
お金が無いので、 りゃま本、らくだ本、その他、 初心者向けの古本探して買おうかと思っていますが 最新版でなくてもよいでしょうか?
671 :
nobodyさん :02/07/31 22:33 ID:oq+m6OUN
>>657 それでは、<br>を改行コードに戻したい時は「\n」に置き換えれば
あとはどのOSで見ても勝手に改行してくれるという事ですよね?
>>671 なんでそんな3分で試せる当たり前の事を聞くんだよ
改行されるに決まってるだろ。
それとも誰かにその事の補償でもさせたいのか、裁判官みたいだな
674 :
670 :02/07/31 23:25 ID:???
>>672 さん
誘導ありがとうございます。
らくだ2版っと、メモメモ・・・
親に駄々こねて、買ってもらおうとしたら受験生なので却下されますた。
こんど、参考書を買うと騙してらくだ本買うように企んでいます(藁
お金欲しい・・・・
>>628 ,629
$row_data{'NAME'} = $name;
$row_data{'NICKNAME'} = $nickname;
$row_data{'NICKNAMES'} = \@nicknames;
push(@loop_data, \%row_data);
HTML::Templateのループネストって、普通でもややこしいのに、
もっと見通しの良い変数名を使ってホスィぞ。(外と内で同じ
%row_data を使ってるとか)
>>674 趣味の本くらい自分の小遣いためて買え・・・。
親にたかるなよ
>>675 ありがとうございます!!
ただ、
>>629 をループ処理すると、@loop_dataの中身はうまく表示されるんですが、
@nicknamesの部分は最後に入れたハッシュだけが適用されるようですね…
つまり、BobbyやHe-Manの部分をループ毎に変えても、結局最後に入れたハッシュの内容が
全てのNICKNAMESの部分に表示されると・・・。
678 :
nobodyさん :02/08/01 07:48 ID:M7oaAkIZ
無理。 2ch全体でログ取ってすらいない。 何か起きたときだけ、緊急に取る。
>>673 windowsしかなくてunixやmacで試せないから聞いてるんだよ。
お前はプログラムしか能のない馬鹿か?
論理的に理解できてるならそれぞれの環境で試さなくてもわかるんだろうが
俺はお前のように論理的にわからないからいちいち自分で試せないことは聞いてるんだよ。
こんなことわざわざ説明しなきゃいけないなんて、だからプログラマー同士って良く対立してるんだね。
わかったら、KENTのlight.cgiはなぜ\rで置き換えているか説明しろ。
>>680 Windowsで試せばいいと思うが。
\nがUNIXでちゃんと表示されるのは当たり前。
\nがWinでOKならMacでもOKだろうと推測する頭を持て。
>KENTのlight.cgiはなぜ\rで置き換えているか説明しろ。
KENTがマカーだからだよ。
改行コードはどれにしてもIEやネスケではちゃんと表示される。
サーバがUNIX系ならUNIXの改行コードを使うのがいいんじゃないかということだな。
682 :
nobodyさん :02/08/01 10:55 ID:xj2aK3qv
>俺はお前のように論理的にわからないからいちいち自分で試せないことは聞いてるんだよ。 まず、論理的にわかるように努力しる! 個別に試してうんぬんなんて 無駄なこと。KENTがどうのなんて気にするな。人気があるのはイイ スクリプトを書いているからじゃない。
>>643 >>680 まぁまぁ。マターリしようYO。
そのテキスト形式のログを<pre>で囲んじゃ駄目なのか?
まともなブラウザなら改行コードにかかわらず表示できるYO。
>>680 やっぱり夏●だったんですね、謝ります。
改行コードの話はスレ違い、板違いなんで
超宇宙真理板にでも逝って下さい
>>680 ああ、妄想ファンタジーに突入してるんか
>KENTのlight.cgiはなぜ\rで置き換えているか説明しろ。
教えて欲しいならコード書け、KENTて誰だ?
まあ推測して書くと、そいつが馬鹿だからだな
perlの改行コードは\nなの、OSがUNIXだろうがマクだろうが
朝鮮人参だろうが関係無い
馬鹿以外の人間はんな事使って3日で気付くんだよな
馬鹿が馬鹿を見本に馬鹿なやり方で馬鹿妄想するから
普通の人間からドンドン遠ざかって行くんだよ
http://natto.2ch.net/denpa/
>俺はお前のように論理的にわからないから お前は根本的に社会生活に問題が有ると思うね
なんか議論中のようなのですがチョト失礼シマスです 厨な質問なのですが、よろしければ答えてくださいです SSIでデータをちょこちょこと処理させようとしたりしたときに 1HTML(?)中に2〜3回SSIを使ってたりすると処理の順番はどうなるのでしょうか? ↑から順に実行>完了されるのでしょうか それとも↑から実行されて、完了しないうちに2番目のが実行されたりするのでしょうか どうかご教授ください、宜しくお願いします
691 :
nobodyさん :02/08/01 18:52 ID:zZ0lPm5t
こんばんは。行き詰まっていますのでどなたか教えて下さい。 jpeg画像をCGI_Lite.pmを利用してアップロードするCGIをperlで作成しているのですが、 アップする際に、アップされるファイルがjpegファイルかどうかを確認する方法が わかりません。 拡張子で確認する以外の方法があれば教えて下さい。よろしくお願いします。
692 :
nobodyさん :02/08/01 18:57 ID:PoaI42Wk
お邪魔します。質問させてください。 port5.comにアクセスログ取得スクリプト設置したんだけど htmlのソースにSSIのコメント<!--#exec cmd="..."-->ってやつが ばっちり表示されてる。でもCGI/SSIは動いている模様。 これは普通のことなのですか? ちなみにhypermartにも同じスクリプト置いてるけど、 こっちは表示されてないです。
>>691 バイナリで送られてきたデータ先頭を確認する。
>>692 表示されているのはおかしいぞ、と。
\xFF \xD8 \xFF \xE0 \x00 \x10 \x4A \x46 \x49 \x46 \x00 がJPEGの先頭のバイナリ。(たぶん。バイナリエディタで自分の持ってるJPEG画像開いて確認してくれ) これが先頭にあるかを見る。
695 :
692 :02/08/01 19:55 ID:PoaI42Wk
>>693 ですよね〜
やっぱりSSIは動作してないかも、です。
でもCGI自体は動いているみたいで自分のアクセスしたログが
記録されてた。SSIが 使えないとダメなスクリプトのはずなのに、
なんでだろう・・・なんか混乱しちゃってます・・
>692 port5.comがどういうところか知らないけど、そこのSSIではexecは許可されてるの?
698 :
692 :02/08/01 20:43 ID:???
>>696 あ、多分解決しました。
port5.comはよく落ちるってことでレンタル鯖板ではすこぶる評判が
良いです。FAQのCGIのセクションばかりみていたんですけど、
他のところにSSIの説明ありました。回答して下さった方ありがとうございました。
700 :
nobodyさん :02/08/02 00:44 ID:Sqea3lxU
>>695 拡張子なんてアテになんないから、691は拡張子以外で、って書いてるんだろ
702 :
675 :02/08/02 02:27 ID:???
>>677 スマソ、いまいち元データと完成後の画面イメージが掴めんので、
事情が理解出来ないのだが、原理的にはこんなんで行くはずだが。
実際には@name0と、@name1は、リファレンスを使用したレコード
構造とかにする必要が有るだろうけど。
foreach my $name (@name0){
foreach my $nickname (@name1) {
my %nickname;
$nickname{NICKNAME} = $nickname;
push(@nicknames, \%nickname);
}
my %name;
$name{NAME} = $name;
$name{NICKNAMES} = \@nicknames;
push(@loop_data, \%name);
}
$tpl->param(ROW => \@loop_data);
<TMPL_LOOP NAME=ROW>
<tr><td><TMPL_VAR NAME=NAME></td><td>
<TMPL_LOOP NAME=NICKNAMES>
<TMPL_VAR NAME=NICKNAME>
</TMPL_LOOP>
</td></tr>
</TMPL_LOOP>
703 :
nobodyさん :02/08/02 06:04 ID:Q2JtjWGI
execでもsystemでも,実行させた外部プログラムが終わるまで 処理がこっちに帰って来ないのが不便でかないません. 外部プログラムを別プロセスで起動させることは出来ますか?
705 :
nobodyさん :02/08/02 10:32 ID:HalM3U4I
チャットで、全員他の人を落とす方法教えてもらえませんか?
CGIファイルを消す。
>703 exec ですと、perl スクリプトが終わるので処理は返ってきません。 system ですと、forkしますから、別プロセスになります。 私は、 外部プログラムをperlの中から呼ばない どうしても外部プログラムを使わないとダメな時は、そのためのシェルスクリプト をperlに吐かせ、それを実行 するようにしてます。
708 :
692 :02/08/02 13:09 ID:???
709 :
nobodyさん :02/08/02 13:30 ID:8kGCovez
画像アップ掲示板で、画像のサムネイルを自動的に作るものがありますが、 あれってどうやってるんでしょうか? (アップした画像を縮小してるんじゃなくて、小さな画像を自動的につくる)
>>709 ここは【Perl】初心者コーナー ですが、読めませんか?
html--------- <input type="checkbox" name="hoge" value="A">A <input type="checkbox" name="hoge" value="B">B cgi---------- @hoge = $FORM{'hoge'}; foreach $value (@hoge){ print "$value"; } チェックボックスの値を受け取りたいんですけど、AとB両方チェックしても Aしか受け取れません。やり方間違ってますか?
>711 間違ってる。 nameを変えないとどちらかが上書きされる。
713 :
nobodyさん :02/08/02 15:09 ID:Blzo1x52
配列として、返ってくると予想していたんですけどこの考えは間違いですか? チェックボックスの数は変動するんでnameを別にするとしたら わざわざ適当な名前+連番とかで付けなきゃいけないって事ですかね。
配列としては取れない。
<input type="checkbox" name="hoge1" value="A">A <input type="checkbox" name="hoge2" value="B">B .... 仮に連番でチェックボックスを生成しても、今度値を受け取る時 その数だけ $hoge1 = $FORM{'hoge1'}; $hoge2 = $FORM{'hoge2'}; ... ってあらかじめ何個も用意しておかなきゃいけないんでしょうか。 (掲示板の投稿削除で管理者は一気チェックして消せるみたいな感じにしたいんです)
$FORM{'hogeN'}; を $hogeN に代入する必要は無いんじゃないか?
>715 頭固い? for(my$i=1;$i<=$last_number;$i++){ push(@hoge,$FORM{"hoge$i"}); } とかで回せば楽だろう。
基本的なことがわかってないヤツは何をやってもダメ
>>715 頭硬い
要領悪い
プログラマーに向いてません
バカだって、バカなりに生きていかなきゃならんし…。
>>711 hoge=A&hoge=B&hoge=C・・・・
上書きはされないで送られる。
読み込むときに
$count = 0;
my @pairs = split(/&/,$buffer);
foreach $pair (@pairs) {
my($name,$value) = split(/=/,$pair);
if($name eq 'hoge') {
$hoge[$count] = $value;
$count++;
}
}
と配列に読み込むようにする。
けど指摘できたの721だけだな。
724 :
712 :02/08/02 20:41 ID:???
>722 取得する時に変える方法は思いつかなかった。 どうせcgi-lib.plかなにかで取得させてるんだろうと思ったし 言っても分からないだろうから、下手に混乱させる必要もないかなと。 >721の発想出ないなんて、確かに頭固くなってて恥ずかしいね。
726 :
nobodyさん :02/08/02 23:15 ID:+4MGC8XT
1 FORM から送信されたデータをデコードしたり、エンコードしたい。 2 こんな風にやってみた。 s/(\W)/'%'. (unpack(H2, $1))/eg; s/%([a-fA-F0-9]{2})/pack(H2, $1)/eg; 3 いや、ふつうに動きますが、いくつか CGI の掲示板 Perl のスクリプトを公開しているサイトを拝見させて 頂きましたが、圧倒的に以下の様なスクリプトが幅を 利かせています。 s/(\W)/sprintf('%%%02X', unpack(C, $1))/eg; s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; "C" で pack or unpack するメリットと、 "H2" で pack or unpack するデメリットを伺いたいのですが。 てゆーか "H2" のが効率良さそうな気がするのですが。
H2の方が効率がいい。 RFCでCの方が書かれて Cの方を使う人が多い。しまっていたから
728 :
726 :02/08/02 23:31 ID:???
>727 アリガトゴザイマス RFC が解りません。 今調べてますが、差し支えなければ教えて下さい。
730 :
728 :02/08/02 23:49 ID:fhO9IRlh
>729 ありがとうございますです。 非常に参考になりました。
731 :
nobodyさん :02/08/03 00:24 ID:4FNUCrqf
叩かれ覚悟で質問します。htmlもロクにわかってません。 FORMで打ち込んだ内容をテキストに保存するCGIを作ってます。 #!/usr/local/bin/perl print<<"EOM"; <form action="./test.cgi" method="POST"> <input type=text name=sub size=50 value="$naiyou"> <input type=submit value="送信する"> </form> EOM open(OUT,">> log.txt"); print OUT "$naiyou"; close(OUT); すいませんアドバイスお願いします。
とりあえず、送られてきたデータを受け取れ。 話はそれからだ。 #!/usr/bin/perl read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); @pairs = split(/&/,$buffer); foreach $pair(@pairs){ $value =~ tr/+/ /; $value =~ s/%([0-9a-zA-Z]{2})/pack("H2", $1 )/eg; $FORM{$name} = $value; } print<<"EOM"; <html> <form action="./test.cgi" method="POST"> <input type=text name=sub size=50 value="naiyou"> <input type=submit value="送信する"> </form> </html> EOM open(OUT,">>log.txt"); print OUT "$FORM{'sub'}"; close(OUT); exit; __END__
733 :
730 :02/08/03 00:34 ID:???
1 CGI 掲示板のログを、なるべく安全に保存したい。 2 "$/" INPUT_RECORD_SEPARATOR に "\n" を代入(する必要は多分無い) "\r\n" を <br> に変換し "\r" "\n" を削除する。 "\r" をセパレータにしてデータを書き込む。 だいたいこんな感じ。 while($i < $log_countmax}){ foreach(keys(%TMP)){$line .= "$_=$TMP{$_}\r";} push(@lines, $line);} 読み込み時には split にリミットを指定する事で文中の "=" は無視できる。 ($key, $value) = split(/=/, $_, 2); 3 少ない環境での動作チェックはしましたが、同様の処理をしている スクリプトを見かけないので、なんとなく不安が残ります。 何か問題点が有りそうでしたら、ご指摘下さい。 もちろん上記スクリプトは、意味が分かる程度に簡略化した物で動きませんよ?
734 :
731 :02/08/03 00:43 ID:4FNUCrqf
>>732 ありがとうございます!
でもサーバーエラーがでます。
なぜだろう・・ちゃんとパスやパーミッションも合ってるのに。
735 :
732 :02/08/03 00:46 ID:???
適当に書いたから(^^; 一応、データの受け取りはよく使われる。 ↓こんなのが。 sub read_form { local($pair,$buffer); if($ENV{'REQUEST_METHOD'} eq 'POST'){ read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }elsif($ENV{'REQUEST_METHOD'} eq 'GET'){ $buffer = $ENV{'QUERY_STRING'}; } local(@pairs) = split(/&/,$buffer); foreach $pair(@pairs){ local($name,$value) = split(/=/,$pair); $value =~ tr/+/ /; $value =~ s/%([0-9a-zA-Z]{2})/pack("H2", $1 )/eg; $FORM{$name} = $value; }
Content-Type: text/html を忘れてたからだ。 print<<"EOM"; のあとに Content-Type: text/html<改行> <改行> 入れてみて。
foreach $pair(@pairs){ の直後に local($name,$value) = split(/=/,$pair); も忘れてた。 回線切って首(略
738 :
731 :02/08/03 01:07 ID:4FNUCrqf
>>731 表示できました。
でも送信してもlog.txtに書き込まれないみたいです。
もうちょっとからかってみます。
>もうちょっとからかってみます。 漏れはからかわれていたのかΣ(゚д゚lll)
740 :
731 :02/08/03 01:13 ID:4FNUCrqf
>>739 いやそういう意味じゃないです!すいません。
自分でcgiをからかうという意味です。
変な言い方ですいません。
ローカルでテストしてみたけど、ちゃんと書き込まれてる。 #!/usr/bin/perl read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); @pairs = split(/&/,$buffer); foreach $pair(@pairs){ local($name,$value) = split(/=/,$pair); $value =~ tr/+/ /; $value =~ s/%([0-9a-zA-Z]{2})/pack("H2", $1 )/eg; $FORM{$name} = $value; } print<<"EOM"; Content-Type: text/html <html> <form action="./test.cgi" method="POST"> <input type=text name=sub size=50 value="naiyou"> <input type=submit value="送信する"> </form> </html> EOM open(OUT,">>log.txt"); print OUT "$FORM{'sub'}"; close(OUT); exit; __END__
742 :
731 :02/08/03 01:30 ID:4FNUCrqf
>>741 できました。
すごい勉強になりました。
感謝!
すいません $value =~ s/%([0-9a-zA-Z]{2})/pack("H2", $1 )/eg; これはいったいどういう処理をしているのでしょうか?
744 :
nobodyさん :02/08/03 08:11 ID:yBArvQmy
携帯からファイルをアップロードできるCGIを作っているんですが、 自分の所に携帯が無いのでどこを気をつけていいのか教えて頂けませんでしょうか? Googleで6時間以上探し回っているんですがヒントすら見つかりません。 どなあたかご教授お願いします。
745 :
743 :02/08/03 09:10 ID:???
s/%([0-9-zA-Z]{2})/pack("H2", $1 )/eg; というのは %12 や %a7 などにマッチさせて pack("H2",$1)というのに変換するということはなんとなくわかるんですが このpack("H2",$1)というのは具体的に何をしているのか解説しているサイト ないでしょうか?もしくはどなたか答えてくれる方いましたらよろしくお願いします。
746 :
nobodyさん :02/08/03 09:36 ID:f5spmMMH
>>744 携帯電話のローカルな情報をアップロードするって話なの?
どこに気をつけるとかいう以前にできるか否かは検討したのか。
>>745 perldoc -f pack すると
H A hex string (high nybble first).
とあるよ。
747 :
nobodyさん :02/08/03 10:09 ID:y5M4ReYw
>>702 こちらの作ってるスクリプトもそれと同じような構造なのですが、
どうも自分のやろうとしている事はレコードを使わないといけないようですね。
ただ、検索してもレコードやリファレンスの構造がいまいちよく分からないんで、
HTML::Template以外の方法を使うことにします。
それほどこのモジュールにこだわる必要もないんで・・・もうしわけない。
Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0) このようなエージェントを利用して使用ブラウザと使用OSを取得したいと考えています。 例えば上の場合だと $browser = "IE 5.5"; $os = "Windows XP"; というような感じに代入させたいのですが。。
>>749 上の例だと、IEは5.01じゃないのか?
しかもOSも2000。
>>750 そうでした。
どうすればいいのでしょうか?
753 :
nobodyさん :02/08/04 01:18 ID:8/YQ8REX
始めまして。質問させていただきます。 フォームメールでローカルに有るファイルを添付させたいのですが、上手く出来ません。 送信したときにローカルファイルをサーバー上に一時ファイルでローカルファイルの コピーを作成できないみたいなのです。 名前だけの空っぽのファイルができてそれが添付されてメールが届きます。 どうしたらファイルのコピーが作れるのでしょうか。 どなたかよろしくご教示ください。
Cで言うところのfscanfってPerlではなんて関数なんですか?
>>753 そのソースを見ないことには改善できないよ。
756 :
755 :02/08/04 01:36 ID:FrE7nmXK
デコード処理を行ってるつもりなのですが、 まったく反映されず、どこが悪いのかも分かりません。 ご指摘お願いします。
757 :
756 :02/08/04 01:37 ID:FrE7nmXK
sub decode { if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } $i = 0; @pairs = split(/&/,$buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
758 :
756 :02/08/04 01:37 ID:FrE7nmXK
&jcode'convert(*value,'sjis'); &jcode'convert(*name,'sjis'); $value =~ s/</</g; $value =~ s/>/>/g; $value =~ s/\r\n/<br>/g; $value =~ s/\r/<br>/g; $value =~ s/\n/<br>/g; $value = $form{$name}; $name = $form{'name'}; $comment = $form{'comment'}; @num[$i]=$value; $i=$i++; }
あーぁ、やっちゃったな。CGIスレにリンク張ってやりたい処理と現状を書くべきなのに。
760 :
756 :02/08/04 01:47 ID:FrE7nmXK
761 :
753 :02/08/04 01:55 ID:8/YQ8REX
すみませんでした。 下に書いてあるふうに、ファイル名を取得して空の同名のファイルをサーバ上の 指定したフォルダに作成してるんですが、その作ったファイルの中にデータを書き こめないんです。 どうしたら良いかご教示いただけないでしょうか。 $filename = $FORM{$tenpu}; $c_type = 'Content-Type'; @tmp = split(/\\/, $filename); $tmpfile = pop(@tmp); $file_path = "./mail_tmp/$tmpfile"; open(OUT, ">$file_path"); while($tmp_byte=read($filename, $buffer, 1024)) { print OUT $buffer; } close(OUT);
>>756 &jcode'convert(*value,'sjis');
&jcode'convert(*name,'sjis');
これは必要か? サーバ環境は?
>>761 $file_path = "./mail_tmp/$tmpfile";
$tmpfile に値ある?
mail_tmp のパーミッションは?
764 :
753 :02/08/04 02:33 ID:8/YQ8REX
763さん すみません、値というと・・・? mail_tmpのパーミッションは777です。
>>763 値というと、つまり、ファイル名がちゃんと入っているの? ってこと。
766 :
753 :02/08/04 02:40 ID:8/YQ8REX
あ、はい。ちゃんと名前は入ってきています。 この空っぽのファイルが添付されて送られてきてしまいます。
768 :
753 :02/08/04 02:55 ID:8/YQ8REX
761より前の処理は if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN,$buffer,$ENV{"CONTENT_LENGTH"}); }else{ $buffer = $ENV{'QUERY_STRING'}; } @pairs = split(/&/,$buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s/&/&/g;$value =~ s/"/"/g;$value =~ s/\,/,\;/g; $FORM{$name} = $value; } です。 それで761の処理以降はsendmailの処理になってます。 サブジェクトや添付ファイルのエンコードとかもそこでやってます。
>>768 だったら、もうすでに標準入力からすべて読み込んでるわけだから当然ファイルは
空になります。
770 :
753 :02/08/04 03:03 ID:8/YQ8REX
そうなんですか!読んでても残ってるのかと思ってました。 もう1回やりなおしてみます。本当にありがとうございました。
>>752 いいもの教えてくれてありがとうございました
質問失礼します。 ユーザー環境でクッキーのオンオフを確認し、 クッキーオフならhidden属性を表示しないようにしたいのですが、 クッキーのオンオフをその場で見極める方法などはありますでしょうか? 自分ではヘッダ情報でクッキーを書き出してから、$ENV{'HTTP_COOKIE'}で 再取得できればクッキーオンだと確認できると思っていたのですが、 クッキーを記録したその場では$ENV{'HTTP_COOKIE'}が更新されないようで 上手くいきませんでした。 クッキー保存と読み込みを別スクリプトで行なえばいいのですが、 それだとサーバーへのアクセスも増えますし、訪問者の人の 手間も増えてしまいます。 クッキーのオンオフをその場で確認する方法、 もしくは$ENV{'HTTP_COOKIE'}の再読み込みをする方法を ご存知な方がいらっしゃいましたら、どうかご教授ください。 よろしくお願いします。
773 :
apholist :02/08/04 21:57 ID:DUVpmc74
ActivePerl、Apache2.039でCGI動かしてるんですけど いくつかのCGIで初期表示のあと、更新しようとすると couldn't create child process: 22: couldn't spawn child process: というようなエラーが表示されます。何が原因だと 考えられますか?
子プロセスを作れませんでした? UNIX専用の関数とか使ってない?
775 :
apholist :02/08/04 22:06 ID:DUVpmc74
776 :
apholist :02/08/04 22:27 ID:DUVpmc74
とりあえあう、Flockと、symlinkは外しました。 他にもありますか? なかなかまとまったページがないっす。
fork とかも。 どのプラットフォームでも動くようなCGI使えや。
778 :
apholist :02/08/04 22:49 ID:DUVpmc74
>>777 難しいこと言うなぁ。簡単なことなのか?
どのプラットフォームでもっていうと、
チャット、掲示板、カウンターなどほとんどWinでは
難しいような気がするんだけど。
まあ、Winで作られたものならWinで動くんだろうけど。
とりあえず、forkチェックしてみます。
「とか」って言ってるけどなんで知ってるの?常識?
779 :
apholist :02/08/04 23:00 ID:DUVpmc74
スマソ。perlのドキュメントにありますた。 Some functions that work on Windows NT/2000 reportedly do not work or are buggy on Windows 95. An example is flock(). Certain functions don't seem to work on ActivePerl. There are several functions that are unimplemented in the ActivePerl system. Here is a complete list of unimplemented functions: Functions for processes and process groups alarm(), getpgrp(), getppid(), getpriority(), setpgrp(), setpriority() Fetching user and group info endgrent(), endpwent(), getgrent(), getgrgid(), getgrnam(), getpwent(), getpwnam(), getpwuid(), setgrent(), setpwent() System V interprocess communication functions msgctl(), msgget(), msgrcv(), msgsnd(), semctl(), semget(), semop(), shmctl(), shmget(), shmread(), shmwrite() Functions for filehandles, files, or directories link(), symlink(), chroot() Input and output functions syscall() Fetching network info getnetbyname(), getnetbyaddr(), getnetent(), getprotoent(), getservent(), sethostent(), setnetent(), setprotoent(), setservent(), endhostent(), endnetent(), endprotoent(), endservent(), socketpair() See the perlport and Win32 documentation pages for more information on the portability of builtin functions in ActivePerl. だって。コピペしないほうがよかったか?
780 :
apholist :02/08/04 23:29 ID:DUVpmc74
うぉー全部チェックしたがまだ同じエラーだ…。
>>780 その前に、ごく簡単なCGIでもそうなるか試した?
782 :
apholist :02/08/05 00:02 ID:vCl4cucl
>>781 ごく簡単なCGIなら動きます。
掲示板も普通の?は動いたけど、megabbsスクリプトで
スレ立て後、レスを書き込もうとすると同じエラー。
NGワード!NGワード!w
>>782 じゃあ、そのmegabbsスクリプトってのがしょぼいんだろう。
785 :
nobodyさん :02/08/05 00:17 ID:mlKhZTXH
C言語 ファイルポインタを使って円の面積を計算するプログラム、教えてください。 ファイルポインタには半径1から10の数値があります。 出力結果は次のようになるようにして下さい 半径 面積 1 2 3 ・ ・ 10
786 :
apholist :02/08/05 00:26 ID:vCl4cucl
787 :
apholist :02/08/05 00:29 ID:vCl4cucl
>>785 ネタ?厨?For文使うか一つずつ円周率3で計算すればいいんじゃない。
790 :
apholist :02/08/05 00:41 ID:vCl4cucl
>785 マルチだったのか。Perlとか言語の区別もつかんとは あわれな厨だな。俺よりアフォだ。 とりあえず、うごきますた。Apache2.039が悪かったみたい。 1.326にしたら動いた。 人柱になるのはもっとスキルみがいてからにします。 ご協力感謝。
791 :
nobodyさん :02/08/05 01:57 ID:LdtViypm
アンダーバーを含む行の先頭に hogeという文字列を追加したい場合 どう書けばいいですか
>>791 キーワード
正規表現 or index
>>791 s/(.*_.*[\x0d\x0a]*)/hoge$1/g;
795 :
nobodyさん :02/08/05 02:35 ID:LdtViypm
>>792 >>793 マッチさせる文字列全体をカッコでかこめば
よかったんですね。
勉強になりました。
>>758 $i=$i++;
はいかんよ
$a=0;
$b=$a++;
の場合は$a=1,$b=0.
$i=0;
$i=$i++;
なら$i=1,$i=0.どっちか分からん。
>>791 while(<>) {
next if !/_/;
s/^/hoge/;
}
ひとつの小難しい正規表現でやるのは嫌な人用。
このスレを見ていると、localだとかcgi-lib.plだとかjcode.plといった記述を よく見かけまずが、未だにperl4しか入ってないサーバばかりなんですか?
軽い方がいいから。
800 :
nobodyさん :02/08/05 11:37 ID:7p5l2D2K
以前こちらで教えていただいた者です。その節は大変お世話になりました。 フォームメールでローカル上のファイルを添付して送信するスクリプトを作ったのですが、 パソコンのアウトルックではちゃんと添付ファイル付きのメールが受信できるのに gooとかのウェブメールや、シグマリオンに付いているMPメールでは上手くいきません。 なにか違いでもあるんでしょうか。 どなたかご教示いただけないでしょうか。
添付ファイルの扱いを間違えてるとか。
802 :
nobodyさん :02/08/05 12:26 ID:7p5l2D2K
扱いといいますと・・・? gooでは件名、本文は正常に受信できて、添付の部分は本文にコードが書かれている状態です。 MPメールのほうは件名もiso-2022-jpと書かれていて、本文もcontent-type云々になってます。 パソコンのアウトルックで使うより、シグマリオンのMPメールで使う方が多いので困っています。
Content-Type: Multipart/Mixed; となってますか。
一つの動作の中で2回デコード作業をしてはいけないんでしょうか。 $ENV{'QUERY_STRING'} の内容は1回目で無くなっちゃうんでしょうか。 うまくいかないんです。
805 :
:02/08/05 14:59 ID:???
うまく行くといいですね ピュア
>>805 全体と載せるのは無理なんで説明します。
で、実は>721でやっているのをやりたいんです。
チェックボックスの値を配列で受け取るとういのを。
#usr/bin/なんたら
$FORM = &getparam; # パラメータ取得
$mode = $FORM{ mode };
if($mode eq "") { &main; }
〜モード判定〜
else { &error("不正なアクセスです。"); }
sub getparam{ # デコードサブルーチン
read( STDIN, $post, $ENV{ 'CONTENT_LENGTH' } );
@data = split(/&/,$post);
foreach $all (@data) {
($name,$value) = split(/=/,$all);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/,/,/g;
$value =~ s/"/"/g;
$value =~ s/</</g;
$value =~ s/>/>/g;
$value =~ s/\r\n|\r|\n/<br>/g;
$value =~ s/<br</<br>/g;
$FORM{$name} = $value;
if($name eq "no"){
push(@nos,$value);
}
}
@FORM
続き sub main{ foreach $hoge (@nos){ print "$hoge"; } } こうやるんですけど、何も表示されないんですね。 @FORMの配列しか受け取れていないんでしょうか。 最後の値を返り値にするから。 なんで if($name eq "no"){ push(@nos,$value); } @nosの値を受け取るためだけのデコードルーチン作ったんですけど それでもうまく値が返ってこないんですよね。
809 :
:02/08/05 16:08 ID:???
postなんで$ENV{ 'CONTENT_LENGTH' } でした。
811 :
:02/08/05 16:22 ID:???
>>810 $ENV{ 'CONTENT_LENGTH' } でも値がなくなるこたーないよ。出力させてみ。
でも標準入力からは1度しか読み込めない。
POSTの場合ははSTDINから受け取るので1回受け取ったらなくなります。
>>807 $postの中に残っていると思われます。
_ _ .' , .. .. .' ∧_∧
∧ _ - ― = ̄  ̄`:, .∴ ' ・,‘∴ , . ( ) ←
>>814 , -'' ̄ __――=', ・,‘ r⌒> _/ /
/ -―  ̄ ̄  ̄"'" . ’ | y'⌒ ⌒i
/ ノ | / ノ |
/ , イ ) , ー' /´ヾ_ノ
/ _, \ / , ノ
| / \ `、 / / /
j / ヽ | / / ,'
/ ノ { | / /| |
/ / | (_ !、_/ / 〉
`、_〉 ー‐‐` |_/
氏ね
∧_∧ _ _ .' , .. .∧_∧
( ´_ゝ`) _ .- ― .= ̄  ̄`:, .∴ ' (
>>815 )
/ '' ̄ __ ヽ´=', ・,' r⌒> _/ /
/ /\ / ̄\-―  ̄ ̄  ̄"'" . ' | y'⌒ ⌒\
_| ̄ ̄ \ / ヽ \_ | / ノ |
\ ̄ ̄ ̄ ̄ ̄ ̄ \__) , ー' /´ヾ_ノ
||\ \ / , ノ
||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄ / / /
|| || ̄ ̄ ̄ ̄ ̄ ̄ ̄|| / / ,'
|| || .|| / /| |
!、_/ / 〉
818 :
802 :02/08/05 20:15 ID:???
803さん、遅くなって申し訳ありませんでした。 Content-Type: Multipart/Mixed;になっています。 もしかしてアウトルックはIEみたいに多少の間違いがあっても 上手いこと動いてくれてしまうんでしょうか・・・。
あれ?いつからここは格闘技板になったのだ?
820 :
nobodyさん :02/08/05 21:37 ID:TC4MSFf/
2chのように上から下へ流れていく掲示板を作っているのですが 書き込んでCGI上でリロードする際に、ページの下の方を表示したいんです。 表示と書き込みのCGIを分けて 書き込み側から <META content=0;URL="read.cgi#sita" http-equiv=refresh> こんな感じで飛ばしてみたんですが何故か#sitaが反映されません。 何かいい方法はないでしょうか。
>820 書き込み後にLocationで飛ばせば?
822 :
nobodyさん :02/08/05 21:44 ID:obWCEw8Y
すいませんが、教えてほしいことがあります。 掲示板のログファイルを閲覧者からは見えなくしてCGIからだけ 読み込めるようにするにはどんなパーミッションにすればいいですか? 掲示板の削除キーが書き込んであるのが閲覧可能というのは、 やはりまずいかなと思いましてね。 いろいろ探したけどわからなかったので、知ってる方いたらお願いします。 まあ、ファイル名をわかりにくいものにする、などの方法はありますがね。
823 :
nobodyさん :02/08/05 21:50 ID:TC4MSFf/
>>821 やってみました。
print "Location:read.cgi\#sita\n\n";
こうですよね。
でもやっぱり#sitaは反映されないようです。
他に何か無いでしょうか…。
>822 パーミッション変えるより、拡張子を.cgiにすれば? >823 ページの読み込みが終わるまで待ってる? その前にどこかクリックしたりすると移動しないことがあるよ? あと、念の為に聞いておくけど、<a name=sita></a>で失敗していたりしないよね?
825 :
nobodyさん :02/08/05 22:06 ID:TC4MSFf/
>>824 >あと、念の為に聞いておくけど、<a name=sita></a>で失敗していたりしないよね?
そのとおりでした。穴があったら入れたいです。
ありがとうございました。
ここ、夜になると一気に寂れるな。 みんな仕事でやってるのか。 に、してはレベルが・・・。
827 :
m(__)m :02/08/05 23:25 ID:7ewZSPim
こういうCGIないでしょうか。
コミュニティサイトをしようかと思っているのですが、
メンバー表に登録するとクッキーが焼かれ、
掲示板などに書き込む時偽りができないようにできるスクリプトありませんか?
例を出すと、
http://daichanchi.com/ で利用しているようなものです。
よろしくお願いいたします。
830 :
nobodyさん :02/08/06 00:04 ID:diugRf3e
次のソースで動かしたところ、 「writing」と表示されたのにかかわらず if文の中が実行されません。 超初心者的なミスを犯していると思いますが、なにとぞご指摘ください。 ActivePerl: 5.6.0.620 Apache 1.3.24 Windows2000 +SP2 /* 以下 プログラム */ print "「$In{mode}」"; if ($in{mode} eq 'writing'){ print "hoge"; exit; }
832 :
830 :02/08/06 00:07 ID:diugRf3e
プログラムが見にくいのでインデントしますた。 print "「$In{mode}」"; if ($in{mode} eq 'writing'){ print "hoge"; exit; } 本当は 「writing」hoge と表示して欲しいのに・・・
833 :
830 :02/08/06 00:08 ID:diugRf3e
>>831 ネタだと思われるようなミスなのですか(鬱)
どこがおかしいのか教えてください。
$In{mode} と $in{mode} はそれぞれ別の連想配列というネタ?
835 :
830 :02/08/06 00:17 ID:diugRf3e
うぎゃ〜、本当だ(鬱) 失礼しました〜っ
どこで writing が定義されてるんだろう。
837 :
830 :02/08/06 00:24 ID:diugRf3e
>836 writingはHTMLのフォームから渡されてきた物です。 mode=writing の時に書き込み処理をするようなBBSを 作っているのでした(笑) こんな単純なことで3時間を費やした俺って一体(鬱)
>>837 そんなキミに-wスイッチとuse strict;をお勧めするよ。
慣れるまでちょっと時間は掛かるけど、
タイポによるつまらないバグが激減すること間違いなし!
840 :
art :02/08/06 10:10 ID:a25IbhtN
投稿ごとにファイルが生成される掲示板を作っています。 1.txt、2.txt・・という具合にファイルを生成したいんですが、 (1)テキストが保存されているディレクトリ内のファイルの数を調べ$prev内に代入 (2)*.txtの*をファイル数を$prev + 1にする。 (3)「($prev+1).dat」という名のファイルにする という考え方でいいのでしょうか? もし合っていればどういう風に書くかアドバイスして頂きたいのですが・・。
>840 ナンバーを保存する別ファイルを作る。
よけいなお世話だけど、投稿削除とか前の方からどんどん削除したいとき大変よ?
サブルーチンの返り値が複数欲しい時はどうすればいいんですか。
844 :
843 :02/08/06 10:30 ID:???
配列が二つ欲しいです. @hogeと@hage これをさらに一つの配列にするしかないですか?
>>843 普通にリストで。
return ($a,$b);
($x,$y) = &hoge();
>>844 リファレンス
sub foo{my (@hoge,@hage);return(\@hoge,\@hage);} my ($hageR,$hogeR)=foo;
847 :
art :02/08/06 10:42 ID:a25IbhtN
>>841 ナンバーを保存する別ファイルか・・
どうやるのですか
なめてるのか? open(FIL,"a.txt"); $a = <FIL>; close(FIL); open(FIL,">a.txt"); print FIL ++$a; close(FIL);
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。 1:自分はこう言う事がしたい。 2:それでこんな風にやってみたが・・・ 3:それだとこんなエラーが出て上手く行かなかった。 1と3が無いと誰も答えられないよ。 良い回答は良い質問から。一緒に勉強しましょう。
850 :
art :02/08/06 11:03 ID:a25IbhtN
>>848 なめてないよ。
そうじゃなくて、まずファイル生成する時にどうやってファイル名を
1.txt、2.txt、3.txt・・と増やして作ることが出来るかってこと。
>>850 尊敬。
まず、BASICか何かでプログラムとは何か。から学ぶべきかと。
852 :
art :02/08/06 11:09 ID:a25IbhtN
ナンバーを保存するファイルを生成するとなると
考えがまとまらなくなってしまって・・・・・。
>>840 の方法だと、分かりやすいんですが
そうすると削除とか大変なんですよね。
いや、そもそもその方式が。
854 :
art :02/08/06 11:11 ID:a25IbhtN
>>853 お願いします・・助けてください・・(笑)
「data」ディレクトリ内にあるtxtファイルの数を $datという変数に代入するにはどうすればいいですか?
856 :
nobodyさん :02/08/06 11:30 ID:yJuB6gJh
cgiで画像を分割する方法ってありますか? 合成ならカウンタとかでよく見かけるんですが、 分割はどうしてもわかりません。 たとえば500x500の画像を 100x100の5個に分割したりする方法です。
857 :
856 :02/08/06 11:30 ID:yJuB6gJh
>>856 500x500
↓
500x100
まちがえたよー
>art 投稿毎にファイルを生成するなら、ファイル名の数値を調べてインクリメントするが吉。 効率悪いし、メンテナンスしにくいと思うが。
前もって分割しておく(固定のファイルをいちいち分割する理由がない)。 もしくはGD.pm
860 :
856 :02/08/06 11:39 ID:yJuB6gJh
>>859 画像を携帯から見ようと思うのですが、
当然機種によって表示できるサイズがちがうので、
表示させる段階で分割させたいのです。
厳密にいえば、
大きな画像の任意の一部を抜き出してブラウザに返すのがいいです。
なので、別に分割してファイルを複数つくる必要はないかもしれません。
GD.pmってモジュールですよね?
まだモジュール使ったこと無いので緊張しますが
ちょっと調べてきます。
861 :
nobodyさん :02/08/06 12:53 ID:3j+94g7Z
$test =~ /ー/; ってやるとエラーが出るんですけど、どうすればいいでしょうか?
$test =~ /\Qー\E/;
864 :
nobodyさん :02/08/06 13:23 ID:xsMd1/x0
掲示板の更新時刻をTOPページに表示しようと思うのですが 掲示板が沢山あり、ログファイルが沢山ある場合、 したの処理を、ログファイルの個数だけ書かないといけないのでしょうか? 良い方法が思いつきません どうすればよろしいのでしょうか? #!/usr/local/bin/perl $file1="log.txt"; $a=(stat($file1))[9]; ($x,$mm,$h,$d,$m,$y,$x,$x)=localtime($a); $m++; print "Content-type: text/html\n\n"; print"掲示板の更新日は$m/$d $h:$mm";
掲示板のログファイル名を配列にいれといてforeachで回して処理すれば?
opendir DIR data; @list = <DIR>; closedir DIR; @CON = grep { /^*.\.txt$/ } @list; $dat = $#CON;
@CON = grep { /^.*\.txt$/ } @list;
>867 それだと1個足らなくない?
>>866 ファイル数用のカウンターを作っとけばいいんじゃねーの。
>>867 出力すると「-1」って出てきたんすけど・・
1個少ないんだったら変数に1足しても問題ないですかね?
>>870 簡単に言わないでよ
873 :
nobodyさん :02/08/06 14:48 ID:xsMd1/x0
>>865 ありがとうございます。
配列に入れて回したのですが
08/06 14:07 メイン掲示板
08/06 14:09 雑談掲示板
・
・
と出力されるのですが、新しいモノが上に来るようにソートするにはどうしたらよいでしょうか?
print "Content-type: text/html\n\n";
foreach $c (1..$q) {
$access=(stat($file[$c]))[9];
($x,$min,$hour,$mday,$mon,$x,$x,$x)=localtime($access);
$date = sprintf("%02d/%02d %02d:%02d",$mon+1,$mday,$hour,$min);
$sort="$date $name[$c]<BR>\n";
push(@new,$sort);
}
@new = sort { (split(/<>/,$b))[6] cmp (split(/<>/,$a))[6] } @new;
print @new;
$sort="$date $name[$c]<BR>\n"; の部分は $sort= "$date<>$name[$c]<><BR>\n"; でした
875 :
:02/08/06 15:16 ID:???
どんどん板のレベルが低下してるのが笑える!
>>875 そうだな・・・
まぁ、ここは初心者のスレだし良いんでないの?
877 :
nobodyさん :02/08/06 16:14 ID:32Vwa5NB
>>873 my %file2mtime;
@file2mtime{@file} = map{ (stat($_))[9] } @file;
foreach my $file (sort{ $file2mtime{$a} <=> $file2mtime{$b} } @files) {
print $file, "\n";
}
878 :
nobodyさん :02/08/06 18:57 ID:+CLAZ6EK
IEで、キャッシュを無効にするにはどうしたらいいでしょう。 cgiからの出力を、ブラウザの戻るボタン押下時に意図的にリ ロードさせたいだけなんですが。。。 <% Response.AddHeader "Expires", "0" If Request.ServerVariables("SERVER_PROTOCOL") = "HTTP/1.0" Then Response.AddHeader "Pragma","no-cache" Response.CacheControl = "no-cache" Else Response.CacheControl = "no-cache" End If %> とか <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Expires" content="-1"> とか 試したんですが無理でした。 誰かよろしくお願いしますっ!
881 :
878 :02/08/06 19:36 ID:+CLAZ6EK
>>879 Perl cgiです。。
formにオブジェクトを埋め込めないため、ノーキャッシュ
で制御しようとしてるんですが、IEではうまく動かないん
で、どなたか経験者がいらっしゃたらなぁと。
>>880 答えれねぇんなら出てくん名ぼけが
>881 向こうのスレでレス返してやってるのは俺なんだがな。 マルチポスト氏ね。
883 :
878 :02/08/06 19:49 ID:+CLAZ6EK
>>882 おおそうか。ならあのページにかかれてある事が
上のソースでやってる事もわかってて書いたんだろうな。
まったく、大変有意義なレスだよな。
ぷ。
意図的にリロード? おまえブラウザて何処で動いてるか知ってる(ププp 何か思いっきりスレ違いだし、 カタワって可哀相だねppp
電波キタ━━━━━━(゚∀゚)━━━━━━!! マルチポストするようなヤツぁ何をやっても駄目。
886 :
878 :02/08/06 20:03 ID:+CLAZ6EK
>>884 クライアントにきまってんだろがぼけ。
クライアントで動くソース投げ店のがサーバのPerl cgiなんだよ。
あっそうか、Perlつかってcgi作った事のない人だったんだ。
ごめんねぇ。。unixとPerlという閉ざされた世界しか知らないんだ。
かわいそうにねぇ・・・・・・。
あ〜〜、いいこいいこ(* T-)ヾ( ̄▽ ̄;) ヨシヨシ w
>>886 > クライアントで動くソース投げ店のがサーバのPerl cgiなんだよ。
お前がやってるのは VBScript ASPだろ
なんでPerlのスレに書くんだよ。
顔真っ赤にして捨て台詞書くなよ、みっともない・・・
888 :
878 :02/08/06 20:17 ID:+CLAZ6EK
わかったわかった・・・。 しかしサンプルで書くときはどんな言語でも書くだろうに・・・。 近くにあるライブラリからもってくるんだからさぁ。 まぁ俺がPerlで書かなかったのが悪かったな。 わりぃわりぃ。 Perlしかしらねぇんだもんな。
誰かアソパソマソ貼ってあげて
ASPスレがあるのにそちらで書かないで暴れてるアホがいるスレはここですか? つーかサンプルも糞もあるかよ、ここはPerlスレだ。 あとCGIとASPの違いが分からんアホも逝ってよし。
___ / \ ________ / ∧ ∧ \ / | ・ ・ | < 氏ねよおめーら | )●( | \________ \ ー ノ \____/
___
/ \ ________
/ ∧ ∧ \ /
| ・ ・ | < おう、呼んだか?
>>889 | )●( | \________
\ ー ノ
\____/
893 :
878 :02/08/06 20:31 ID:+CLAZ6EK
最初からこう書けばよかったな。 sub printhtml{ my($htmlbody,$mime)=@_; my $nc="\n" .'<meta http-equiv="Pragma" content="No-Cache">' .'<meta http-equiv="Cache-Control" content="No-Cache">' .'<meta http-equiv="Expires" content="Monday, March 01, 1999 00:00:00 AM GMT">'; &Jcode::convert(\$htmlbody,'sjis'); &Jcode::convert(\$::debug,'sjis'); if($::isnocache){ print $cgiutil::httpheader_nc; $htmlbody=~s/\<head\>/<head>$nc/; }else{ print $cgiutil::httpheader; }; print $htmlbody; if($::isdebug){print "<h4>DEBUG START</h4>\n".$::debug;}; 1; }; ってやってるんだが、IEのcashに残る。 でもこれはPerlの文法とかじゃねぇから、わっかんねぇな。 スレ違いスマソ
894 :
nobodyさん :02/08/06 20:31 ID:+On492A+
モジュールのLWP::UserAgentはどこにありますか?
>>893 あまり電波には答えたくないんだが、、、
cgiutilパッケージの中身は分からんは $htmlbodyの中身は分からんは、、、
とりあえずDOSプロンプトかShellで試して出力結果のヘッダに
Pragma: no-cache
Cache-Control: no-cache
<head>〜</head>に
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="co-cache">
が含まれてるか見てみれ
>>894 http://search.cpan.org/
896 :
878 :02/08/06 21:29 ID:+CLAZ6EK
>>895 色々スマソ。
HTTPリクエストにもhtmlにも含まれてます。
で、理由としては隠し属性項目でイベントを保存していたため、
戻るで戻ってこられるとイベントが初期値ではなくなっていたためなんですよ。
で、リロードをかけさせるために有効期限とキャッシュレスにしようとしてい
たんですがうまくいかなかったもので。。
java-scriptでリロード時に強引に書き換えるようにして対応しました。
本来リロード時のイベントが、ボタン押下時のイベントを知っているわけ
ないんですが、これしかうかびませんですた。
スレ違いにもかかわらず、申し訳ありませんでした。
897 :
:02/08/06 22:33 ID:???
ランキングCGI作ってるんですが 降順で表示させようと reverse sort (@count); で実行すると、 9 9 8 7 4 2 16 ・・と、なぜか16が最後に来てしまいます。 どなたか分かる方いらっしゃいませんか?
899 :
nobodyさん :02/08/06 23:41 ID:Fh8h+3RQ
辞書式に降順してるんでしょ。 reverse sort {$a <=> $b} @count で、どうでしょ。チェックしてないけど。
900 :
:02/08/06 23:43 ID:???
sort{$b<=>$a}@count;
>>899 出来ました!!
ありがとうございました!!
>>900 reverse使わなくても出来るんですね。
参考になりました、ありがとうございます。
903 :
899 :02/08/06 23:51 ID:Fh8h+3RQ
904 :
:02/08/07 00:24 ID:ulRsWHQg
すみません、基本以下の質問なのですが、PHPを設置できるレンタルサーバ はないでしょうか? 御存じの方、教えてください。お願いします。
905 :
nobodyさん :02/08/07 00:36 ID:nEZxoP/q
xrea
906 :
nobodyさん :02/08/07 06:28 ID:4Lzws0bX
kz islandさんの「アクセス人数表示Lacerta 0.11」CGIを設置したいんですが
ダウンロードする
属性をCGIを755 LOGを666に変更する
HTMLページに<!--#exec cmd="○○/lacerta/lacerta.cgi"-->
と、埋め込んで
CGIと同じディレクトリにアップする
この設置の仕方は間違ってるのでしょうか?
アップしたHTMLページを開いても何も表示されません・・・。
どなたか、教えていただけませんでしょうか?
ttp://www.kz-island.net/cgi/lacerta.htm
shtml だと思うが……。
908 :
907 :02/08/07 07:15 ID:???
すまん、寝起きで変なことを書いた。 「SSI が有効な設定になっていて 拡張子が shtml になっているのか?」 と言いたかったんだ。
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。
910 :
nobodyさん :02/08/07 09:02 ID:fr9q9q5s
cgiの中でxmlファイルを生成して、(xslは当然もとから用意しておいて) xmlをhtmlに変換する事はできますか? xmlとxslだけではIEでしか表示できないので普通に手作業で、 msxsl.exeを使ってhtmlへ変換していましたが 今回はcgiでxmlを生成してそこからhtmlへ変換することになったのです。 なのでmsxsl.exeの役割をcgiの中でも出来るのかどうかというわけなのです。
>>910 DOMとかそう言うXMLの常識の言葉を知っていれば答えは自分で出せるはずだけど。
912 :
nobodyさん :02/08/07 10:56 ID:7jIJ9A+d
うpろだを作ってるのですが、 送信するものがファイルのみならうまくいくのですが、 一行コメント等もいっしょに送るにはどうすればいいでしょうか? というのも、 binmode(STDIN); とやって標準入力をバイナリモードにしちゃうやりかたしかわからないので テキストは受信してもめちゃめちゃなんですよ。
テキストもバイナリで受け取っても問題ないと思うが? ただ\nとかいう表現方法はお勧めできない。
914 :
nobodyさん :02/08/07 12:02 ID:biTmKPZ6
まさか、エンコードした日本語を「化けてる」って言ってる わけじゃないよね。
>>912 テキストファイルをアップロードしたら、まんま送られるだろ。どうめちゃめちゃなの?
>>914 アップロード時に日本語がエンコード???
>>915 うpろだでアップロードなんだから、日本語とかはURLエンコードされてしまうと思われ。
>>912 binmodeってWindowsサーバ使ってるのか。
>>915 日本語テキストファイルはそのまんま送られないよ。
「アップロード URLエンコード」とかのキーワードで探せばわかる。
>>912 はどこにもテキストファイルとは書いてない。
924 :
920 :02/08/07 16:50 ID:???
>>920 はテキストファイルじゃなくってテキストそのもののことです。
それでも
>>921 の見解は間違いなことにはかわりない。
とりあえず日本語をHTTPでやり取りするときには(ブラウザ側で
自動的に)URLエンコードされるのは当然なんだが、それは知って
いるのかな?
926 :
921 :02/08/07 17:01 ID:???
927 :
921 :02/08/07 17:44 ID:rbDAoZ/o
私の見解を enctypeがapplication/x-www-form-urlencoded(デフォルト)なら日本語はURLエンコードされる。 しかしアップローダということなので恐らくenctypeはmultipart/form-dataと思われる。 multipart/form-dataではURLエンコードはされない。 以上
>>927 漏れもファイルのほうはそう思うが、
送られてくるテキストの方が掲示板のデータように送られてくるのだとしたら、
URLエンコードされてしまうと思う。
つーか、
>>912 現れてどうめちゃくちゃなのか言え!
929 :
921 :02/08/07 18:23 ID:IJRoW2QJ
<form enctype="multipart/form-data" method="POST" ・・・> <input type="text" name="hoge" value="日本語"> <input type="submit"> </form> これでエンコードはされない だけどboundaryとかが入るのでnameとvalueの受け取りが面倒。
930 :
nobodyさん :02/08/07 18:38 ID:sSYiyIo6
931 :
nobodyさん :02/08/07 18:41 ID:mhNc4G4w
とりあえず、実際にやってみれば判るんでない。
932 :
921 :02/08/07 18:43 ID:2dLUgCtT
>>912 CGI.pm使うかcgi-lib.pl使っとけ。
これは? %82%A4%82%F1%82%B1
perlのコメントを自動的に取り除いてくれるソフトありませんか?
Perlがもっとも得意とする分野なんだが・・・。作れ。
>>935 いやネタとして出題しただけだが
俺が分からなくて困っているのではない。
>>936 perldoc -q comments
で、C Styleのコメントを取り除くscriptを解説してくれている。
それを参考にしる。
$val =~ s/&/&/g; $val =~ s/"/"/g; $val =~ s/</</g; $val =~ s/>/>/g; $val =~ s/\0//g; このような処理はデコードとはいいませんよね? なんて言うんでしょうか?
置き換え。
>>941 もしコメントとして書く場合はどれが適当でしょうか?
■[置換]のEXCEED和英辞典からの検索結果
ちかん
置換
substitution; replacement; 《数学》 a permutation. 〜する substitute; replace; 《数学》 permutate.
tikan; esuke-pu; ↑ これが伝説のPGにだけ許される最高の称号
思うに次スレたてて欲しくない。 ぜんぜんPerlの話じゃないやん。 CGIすれに統合!でめでたしめでたし終わり。
>>936 モジュールはちと面倒くさいけど、普通のスクリプトからコメントを
取るなら多分 perl -MO=Deparseが一番簡単だと思う。B::Deparseなら
q#foobar# とかの"#"に惑わされる事はないし。
>>946 ボクりんが今から作るから、チョット待っててネ、パックン!
次スレは【Perlコーディング】とタイトルに入れてほしい。
949 :
nobodyさん :02/08/08 00:32 ID:zM69Q9o6
正規表現で アイウエオという文字列があったときに ア イ ウ エ オ 文字ごとに空白を ってあける方法ってありますか? あるとしたらどうやるのでしょうか? 簡単にできそうで2バイト文字の扱いがよくわかりませんでした・・・
951 :
947 :02/08/08 01:25 ID:???
ど? #!/usr/bin/perl my @files= ('/path/file.pl'); for my $file ( @files ){ open(R, $file) || next; open(W, ">$file.txt") || next; while (<R>){ last if /^__(?:END|DATA)__$/; next if /^[\s;]*$/ || (/^[\s;]*#/ && $.!=1); 1 while s/^(.*[\w"'\)\]\}\s];|.*\)\s*\{)\s*#.*/$1/; s/;[;\s]+\n$/;\n/; print W unless (!/^=cut/ && /^=\w+/) .. /^=cut/; } close(R); close(W); }
952 :
nobodyさん :02/08/08 01:34 ID:htQeibpH
>>949 正規表現じゃなくて良いなら。応用は自分で考えて。
$hoge = index($value,'アイウエオ');
if($hoge > -1){
for($count = 0; $count < 4; $count++){
substr($value,$hoge+2,0) = ' ';
$hoge += 3;
}
}
953 :
947 :02/08/08 01:43 ID:???
>>949 ど?
s/([\201-\237\340-\374].|.)/$1 /g;
954 :
947 :02/08/08 01:48 ID:???
>953 あ、書き忘れたけどSJIS対応ね。 EUCなの?
955 :
947 :02/08/08 01:52 ID:???
EUC対応ど? s/(\216[\241-\337]|\217?[\241-\376].|.)/$1 /g;
文字列に"#~()<>などの記号が何回含まれてるかを調べるにはどうしたらいいべかー
957 :
947 :02/08/08 03:02 ID:???
958 :
947 :02/08/08 03:04 ID:???
わかりにくい書き方した? もいちど。 $n= $_=~ tr/#//;
簡単にできたんすね。初心者ゴメン!ヽ(`Д´)ノ
d付けなきゃ大丈v(゚д゚)
EUCで書いた自作チャットをケータイ端末に対応させようとしたところ 古いi-modeではログが化けてしまう模様 調べたところ解決策はどうもないっぽいんで駄目押し覚悟でここへ来た 質問。 解決策はあるますか。
Shift_JIS に変換してみる。
>>951 今試してみたらなんにもコメント取らないんだけど・・・
EUCで書いたまま変換させる? それとも最初からSJISで保存する?
>>965 出力のみShift_JISがいいかと。
>>966 方法がわからなくて。
METAタグじゃないよね。。
jcode.pl Jcode.pm のどちらかを使って、ログをShift_JISに変換。
jcode::convert(\$body,"sjis"); てなかんじ?
>>964 こういうこと?
対象に上書きするので注意。
#! /usr/bin/perl
$perlfile = 'ファイル名';
open(FILE,"+<$perlfile");
while($tmp = <FILE>){
$tmp =~ s/\#+[^;]*\n/\n/;
$dat .= "$tmp";
}
seek(FILE,0,0);
print FILE "$dat";
truncate(FILE, tell(FILE));
close(FILE);
print "Content-type: text/plain\n\n終了\n";
971 :
970 :02/08/08 06:28 ID:???
訂正 ×$tmp =~ s/\#+[^;]*\n/\n/; ○$tmp =~ s/\#+[^;{}]*\n/\n/;
【私立円正寺中学校入学試験】 その2 [問題] ひとつの箱があります。その中に0から9までの数を書いたカードが それぞれ3枚ずつ入ってます。(計30枚) A君が3枚、その箱からカードを取り出すとき8と5と3のカードの組み合わせが (583,853など)でる確立を求めなさい。:制限時間3分
"確立"は求められないなぁ。。。
[確立]かあー・・
9C3 / 30C3 かな? もう忘れた。麗しき過去の記憶...学生時代よもう一度。
(3/10) * (2/10) * (1/10) Web Prog 板で Perl 初心者てことは、 Web Prog の初心者は来るなと? 最終回記念カキコ
978 :
964 :02/08/08 10:35 ID:???
>>970 いや、俺は最初の質問者じゃないんだけど、回答を試してみたら
何も起こらなかったという事を報告したかっただけ。
ちなみに
>>970 のヤツだとやっぱり
qw/
#foobar#
/;
sprintf(
'%s-000',
$foo = q#foobar#,
);
とかもちょんぎられちゃうから駄目だと思う。
(だから確かなのはO::Deparseくらいしかないと思うわけだが・・・)
(9/30) * (6/29) * (3/28)
980 :
947 :02/08/08 12:24 ID:???
>>978 動かなかった? 以下のでど? 対象ファイルを@filesに設定
#!/usr/bin/perl
my @files= ('/path/file.pl');
for my $file ( @files ){
open(R, $file) || print "Can't open $file\n";
open(W, ">$file.txt") || print "Can't open $file.txt\n";
while (<R>){
next if (!/^=cut/ && /^=\w+/) .. /^=cut/;
last if /^__(?:END|DATA)__$/;
next if (!/^\s*$/ && /^[\s;]+\n$/) || (/^[\s;]*#/ && $.!=1);
1 while s/^(.*[\w"'\)\]\}\s];|.*\)\s*\{)\s*#.*/$1/;
s/;[;\s]+\n$/;\n/;
print W;
}
close(R); close(W);
}
perlのモジュールを本を見ながら作ったのですがどうやって読みこませるのですか?
┌──────────────────────―─―┐ │ | │ | │ | │ | │ ∧_∧ | │ ( ・∀・) | │ ( ) | │ | | | | │ (__)_) | | WebProg | │ | │ 【Perl】初心者コーナー を終了しています… | │ | │ | | | | | └───────────────────────――┘
983 :
nobodyさん :02/08/08 15:59 ID:N0Sb7H4r
>981 読みこむ方で(モジュールファイルをModule.pmとして)、 use Module; とやる。 モジュール作れたんなら、分かっているはずだが...?
985 :
nobodyさん :02/08/08 18:04 ID:UER6B09R
掲示板作成中なのですが、 ページを更新したり、そのページを訪問しただけで投稿記事が増えてしまします。 どのような対処法があるのですか? locationを使おうと思ったのですが、うまくいきません。 よろしくお願いします。
986 :
sa :02/08/08 18:07 ID:???
a
公開されているものを参考にする。
988 :
985 :02/08/08 18:15 ID:UER6B09R
>>987 そうします。
ついでに、もしよろしければ
どのような記述を参考にすれば良いのかヒントだけでもいただけま戦火?
>>985 内部処理チェックしてみてわ。
訪問しただけでも増えるなら、おそらく処理途中で必ず投稿処理を行うような感じになってるから
記念パピコV(^o^)V
>>984 モジュールってインストールしなきゃつかえないんですよね?
module.pmをmoduleっていうフォルダにいれてるんですがそれを
呼び出すのは無理?
>991 何か壮大な勘違いをしている可能性アリ。 呼び出す側のルーチンで use Module; デスヨ?
>>992 test.cgiから
moduleフォルダの中にあるmodule.pmを呼び出す場合は
test.cgiにuse Module;って記述するんですよね?
それでやってみたんですができなかったんですが・・
994 :
993 :02/08/08 21:18 ID:???
↑はuse moduleに訂正
>>993 それでやるならtest.cgiも同じフォルダにつっこんどけ
push @INC, './module'; じゃダメポ?
use lib './module'; でもいいかと。
jhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
次スレは無し。 CGIスレッドに統合すべし。 反論する者がなければ決まり。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。