CGIだけど、なんか質問ある? Part 9

このエントリーをはてなブックマークに追加
952nobodyさん:03/03/25 21:05 ID:???
いや >>949 は、無事動きましたよ、という報告なのだろう。ウンウン
953nobodyさん:03/03/25 21:08 ID:???
>>951
> # Perlの変数って数字から始まってよかった?
そもそも、数字で始まる予約変数があるからダメでせう。
954nobodyさん:03/03/25 21:11 ID:???
>数字で始まる予約変数があるから

通常の変数でも可能ってこったな。
955お初:03/03/25 21:16 ID:???
有難うございました。>>951さんの教えてくれた記述どおりやりましたら、
無事、リンクできました。どうもこのたびはご迷惑お掛けしました。
956nobodyさん:03/03/26 04:10 ID:???
あるレン鯖屋のサイトに「○○(CGIスクリプトの名前)はハードディスクを破壊するので禁止します。」と書かれていたのですが、
そんなことできるんでしょうか。
957nobodyさん:03/03/26 04:19 ID:S5IZshnU
★男はココを見るべし★女と金と???★
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
http://www.pink-angel.jp/betu/linkvp2/linkvp.html
958nobodyさん:03/03/26 07:50 ID:???
>>956
破壊にも色々あるけど、root 権限で動くとかじゃなければ無理だろ。
お子ちゃまの暴走に対する抑止効果は期待できるかもね。
良質の客が去っていくという逆の効果も発生するだろうが。
959お初:03/03/26 10:16 ID:???
言われたとおり、早速、本を買ってきて3時間ほど苦闘しましたが、失敗しました(TT

教えて頂いた応用で、
$2ch = (split(/=/, $ENV{'QUERY_STRING'}))[1];
$2ch =~ s/%([a-fA-F\d][a-fA-F\d])/pack('H2', $1)/ge;
に、($2ch,$1ch)=split(/&/,$data);をつけて、
フォームを2つに増やし、↓HTML
<HTML>
<BODY>
<FORM METHOD="GET" ACTION="./***.cgi">
ログイン名:
<INPUT TYPE="text" NAME="2ch">
<INPUT TYPE="text" NAME="1ch">
<INPUT type="submit">
</FORM>
</BODY>
</HTML>
リンク先を
http://$2ch.$1ch.net/ にして$2chのフォームに、2、
$1chのフォームに1と入力したのですが、
リンク先がhttp://2.1ch.net/になってしまします
本当に勉強してもお手上げでした。
960お初:03/03/26 10:18 ID:???
間違えました。上2段は&dataでした
$data = (split(/=/, $ENV{'QUERY_STRING'}))[1];
$data =~ s/%([a-fA-F\d][a-fA-F\d])/pack('H2', $1)/ge;
961nobodyさん:03/03/26 10:25 ID:???
>>959
まずは変数名を変えれ。
($2ch,$1ch)=split(/&/,$data);
を、
($host2,$host1)=split(/&/,$data);
などに。
してから、
print qq(http://$host2.$host1.net);
と。
962nobodyさん:03/03/26 10:26 ID:???
>>959
ちょっと待ってくれ。
自分で書いたソース、各行でどんな処理をしているのかを理解しているのか?
そもそも
1. 動きゃいいのか?
2. Perl(じゃなくてもいいけど)のプログラミングスキルを身に付けたいのか?

# ところで朝7時から開いてる本屋があるのか?
963bloom:03/03/26 10:30 ID:C4vNyXIc
964お初:03/03/26 11:52 ID:???
>>962さん、昨日買いました

プログラムのスキルはまだですが、多少の知識を得ました
965nobodyさん:03/03/26 11:54 ID:???
>>964
>買いました

こんなところで油売ってないで呼んで理解してください。
9664:03/03/26 13:40 ID:qOessVDe
>>965
激しく同意
そもそも
($ch2,$ch1)=split(/&/,$ENV{'QUERY_STRING'});
$ch2 = (split(/=/, $ch2))[1];
としないと。しかもどっちが2chで、どっちが1chか怪しい。
GETでどのような形式のデータが送られてくるか$ENV{'QUERY_STRING'}を
そのままprintして確かめてください。
9674:03/03/26 13:46 ID:qOessVDe
my($name, $value, %ch);
foreach (split(/&/, $ENV{'QUERY_STRING'})) {
($name, $value) = split(/=/, $_, 2);
$value =~ s/%([a-fA-F\d][a-fA-F\d])/pack('H2', $1)/ge;
$ch{$name} = $value;
}
print "http://$ch{'2ch'}.$ch{'1ch'}.net/";
968お初:03/03/26 13:58 ID:???
本当にいつもすみませんでした。無事、URLを表示する事が出来ました。
4様、その他アドバイスをくださった方々に非常に感謝してます。
m(_ _)m
969nobodyさん:03/03/26 14:52 ID:S5IZshnU
★男はココを見るべし★女と金とサンプルムービー★
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
http://www.pink-angel.jp/betu/linkvp2/linkvp.html
970nobodyさん:03/03/26 15:14 ID:???
つーかそのソースの各行がどんな処理をしてて、
ここをこうするとこうなって・・・
てなことはどうでもいいんだな多分。
せっかく本買ったのにもう見ることも無いんだろうな
で、また何かわからないことがあると、
とりあえずこのスレにきて「お初」って書いて質問するんだろうな
971nobodyさん:03/03/26 16:21 ID:???
>>970
何か不都合でも?
972nobodyさん:03/03/26 21:04 ID:???
>>970
このスレは質問者のためだけのスレではないのです。
回答者も、質問者から如何にして質問の要点を引き出すか、を楽しめるスレなのです。

なんちて。
973nobodyさん:03/03/26 21:05 ID:???
馬鹿はこれでも努力した方でしょう。
974nobodyさん:03/03/26 21:09 ID:WT1OtOAR
CGI(perl)でPOSTで<FORM>からデータをもらうときはどうすれば
いいのですか?
975nobodyさん:03/03/26 21:10 ID:???
>>974
標準入力から受け取ってください。
976nobodyさん:03/03/26 21:16 ID:???
>>975
標準入力ってなんですか?
977nobodyさん:03/03/26 21:16 ID:???
>>976
stdinのことですよ。
978nobodyさん:03/03/26 21:17 ID:???
>>977
ますます分かりません(T.T)
979nobodyさん:03/03/26 21:17 ID:???
Perlなら、STDINっていうファイルハンドルがあるから、それを使って読む。
980nobodyさん:03/03/26 21:19 ID:???
>>978
帰れ。
981nobodyさん:03/03/26 21:19 ID:???
>>979
なんとなくわかりました(ToT)
982nobodyさん:03/03/26 21:21 ID:???
>>974-981 ワラタ
9834:03/03/26 21:23 ID:qOessVDe
標準入力から読みます。
my $buf;
sysread(STDIN, $buf, $ENV{'CONTENT_LENGHT'});
print $buf;
質問、sysreadとreadの使いどころは?
自分はSocket関連だとsysread使いますが、ファイルを読むときは
readです。
9844:03/03/26 21:24 ID:qOessVDe
LENGTHね・・
985nobodyさん:03/03/26 21:24 ID:???
標準入力から読みます。
my $buf;
sysread(STDIN, $buf, $ENV{'CONTENT_LENGHT'});
print $buf;
質問、sysreadとreadの使いどころは?
自分はSocket関連だとsysread使いますが、ファイルを読むときは
readです。標準入力から読みます。
my $buf;
sysread(STDIN, $buf, $ENV{'CONTENT_LENGHT'});
print $buf;
質問、sysreadとreadの使いどころは?
自分はSocket関連だとsysread使いますが、ファイルを読むときは
readです。標準入力から読みます。
my $buf;
sysread(STDIN, $buf, $ENV{'CONTENT_LENGHT'});
print $buf;
質問、sysreadとreadの使いどころは?
自分はSocket関連だとsysread使いますが、ファイルを読むときは
readです。標準入力から読みます。
my $buf;
sysread(STDIN, $buf, $ENV{'CONTENT_LENGHT'});
print $buf;
質問、sysreadとreadの使いどころは?
自分はSocket関連だとsysread使いますが、ファイルを読むときは
readです。標準入力から読みます。
my $buf;
sysread(STDIN, $buf, $ENV{'CONTENT_LENGHT'});
print $buf;
質問、sysreadとreadの使いどころは?
自分はSocket関連だとsysread使いますが、ファイルを読むときは
readです。
9864:03/03/26 21:25 ID:qOessVDe
>>983
CGIと関係なかったかも。
スマソ
987950:03/03/26 22:56 ID:???
988nobodyさん:03/03/27 00:16 ID:OfSB210s
質問したいんですが、ホント馬鹿な質問っぽいんで先にごめんなさい。

foreach (0 .. 10) {
 if (-e "$_.dat") {
  open(IN,"$_.dat") || &error("ファイルオープンエラー");
  close(IN);
 }
}

↑こんなことする意味ってありますか?(ifの部分)
それだったらエラーを返さずに

foreach (0 .. 10) {
 open(IN,"$_.dat");
 close(IN);
}

これだけでいくのと一緒・・・っていうかこうするべきなんでしょうか?
989nobodyさん:03/03/27 00:20 ID:???
>>988
そもそも何がしたいのかに依る気がするんですが。
990nobodyさん:03/03/27 00:20 ID:???
>>988
意味あるだろ? エラートラップをこまめにする癖をつけるのが悪いとは思わないし。
.datファイルが破損することだって絶対にないとはいえないし。
991nobodyさん:03/03/27 00:23 ID:???
-eでいちいち存在をチェックしなくても、openで失敗するから問題ないっていうこと?

openが存在しないっていう理由でのみ失敗するなら、if (-e ...は無意味なんだけど。
992nobodyさん:03/03/27 00:28 ID:???
つまりファイルが無ければ処理しないでスルーして次のファイル・・・
ってことをしてるつもりなんですが、
やっぱり下のじゃ問題ありっぽいですねサンクスです
993nobodyさん:03/03/27 00:41 ID:???
なぜオープンに失敗したらnextするとしないんだろう。
994nobodyさん:03/03/27 00:57 ID:???





























995nobodyさん:03/03/27 01:44 ID:???
ume
996nobodyさん:03/03/27 01:45 ID:???
997nobodyさん:03/03/27 01:45 ID:???
産め!
998nobodyさん:03/03/27 02:04 ID:???
埋め
999nobodyさん:03/03/27 02:06 ID:???
15350
1000nobodyさん:03/03/27 02:07 ID:KPZ2y82F
>>990
死ね。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。