【Perl】初心者コーナー Part15
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
02/08/08 23:19ID:???1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
CGIだけど、なんか質問ある? Part 6 (その2)
http://pc.2ch.net/test/read.cgi/php/1025930486/
参考書籍の話題は【【Perl,CGI】参考書籍 第2版】
http://pc.2ch.net/test/read.cgi/php/988809842/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般】
http://pc.2ch.net/test/read.cgi/php/991313362/
スクリプトの改造依頼は 【スクリプト改造工房 Part4】
http://pc.2ch.net/test/read.cgi/php/1012839651/
過去ログ、その他の役立ち情報は>>2-10あたりを見よう。
0588名無しさん@Meadow
02/09/04 12:03ID:gOg0cXWU書き込む前でしょ。
while($logsize > $maxsize) {pop @data; ↑$logsize = (stat($logpass))[7];}
矢印のところで書き込まないと・・・
それより別の方法を考えたら?
0589nobodyさん
02/09/04 13:23ID:???0590nobodyさん
02/09/04 14:56ID:???foreachでまわして一行ずつlength関数でバイト数を調べるほかに何か方法ありますでしょうか?
0591nobodyさん
02/09/04 15:15ID:???0592nobodyさん
02/09/04 15:23ID:2Otyyhgvここのメル友募集用掲示板で会員用サイトを作りたいのですが、
http://tsubaki.sakura.ne.jp/~campus/grooweb/jewel.html
メールを送る時にID&PASSでアクセス制限をかけたいのです。
どの様に作ったら良いのでしょうか?
0593名無し
02/09/04 15:51ID:AttOz/Tz回答が書かれているのを見つけられないので
以前、質問した人に代わってお聞きします。
CookieをOnにしないと弾き出してしまう
ここで使っているものみたいなCGIのスクリプトを
扱っているようなホームページは知りませんか?
もちろん、ここにスクリプトを書いて下されば
もちろん、なおさら有り難い事ですが…
0594b
02/09/04 16:01ID:07M2lj7H0595nobodyさん
02/09/04 16:12ID:A3ZRMRKj実行する際に、専用のSSLサーバー(ttps://***.site-secure.net/)
を通すとInternalServerErrorが出てしまいます。
どなたか分かる方いたらお願いします。
0596nobodyさん
02/09/04 16:19ID:???, - - 、 /ヽ
/ O \グヒャッ ! /ヽ、 / ヽ
,, : ,ー, O | / _,;, -'''"~~ ヽ
'' ; ∴_ノゝ ゝ /o O ヽ
ヽ ,;''"~"'';, / ┌─┐ ノ( ヽ
_ノ| ;;'';;'';;'';;'' | / | ⌒ | <スレ違いもはなはだしいわ!
ゝ、ヾ ヾ | ト、 | /
/ ヽ ヾ ヾ ヾ、 \ノ ノ
ノ\_ヾ ヾ /⌒ヽ、 ___/、
ノヾ ヾ_ _/ ノ, ヽ
ヽ、ゝ ノ ノ ハ ヽ
ゝ、 ノ ノ、 ノ ゝ | )
ー─一'´ ゝ、 l'´
) /
CGIだけど、なんか質問ある? Part 6
http://pc.2ch.net/test/read.cgi/php/1025930486/
0597nobodyさん
02/09/04 17:33ID:???どんなスクリプトでも頭に以下のような文を入れれば弾ける。
unless($ENV{'HTTP_COOKIE'}){
print "Set-Cookie: value=check; path=$ENV{'SCRIPT_NAME'} domain=$ENV{'HTTP_HOST'} expires=Fri, 31-Dec-2010 00:00:00 GMT\n";
}
&error_end('くっきーオンにしてちょ') unless($ENV{'HTTP_COOKIE'});
0598593
02/09/04 19:35ID:rVUPKdSlどうも有り難うございました。
まさか、こんなに早く教えて頂けるとは思いませんでした。
ところで
expires=Fri, 31-Dec-2010 00:00:00 GMT\n
の部分なのですが、ここの記述は
絶対こうでなくても構いませんよね。
0600名無しさん@Meadow
02/09/04 21:42ID:rtiaBVOu$ perl -e '@ar=qw(a b c d e f); print length("@ar"), "\n";'
11
0601nobodyさん
02/09/04 22:06ID:???一気に消す方法はないでしょうか?ご教授頂けないでしょうか?
0602名無しさん@Meadow
02/09/04 22:18ID:rtiaBVOu$ perl -e 'system("rm -rf ./dir");'
./dirってとこは、消すディレクトリのパスを入れてね。
0604601
02/09/04 22:33ID:???0605名無しさん@Meadow
02/09/04 22:35ID:rtiaBVOu>そう言う方法があるのですがね。
~~
逆説の「が」ですか?
だったら、
$ perl -e 'use File::Path; rmtree ("./dir");'
0606601
02/09/04 22:42ID:???そういう意味じゃないです(;´Д`)
そちらもダメでした・・・
logフォルダーに 1 と言うフォルダーがあり、
その中に、0.log 1.log ・・・ 10.log
と言うファイルが有るので、それをフォルダーごと消したかったんです。
説明が悪かったのかも知れませんが・・・
0607名無しさん@Meadow
02/09/04 22:50ID:???>そちらもダメでした・・・
perl5でしょ?
libディレクトリにFileモジュールが入ってないってこと?
考えがたい。
じゃスクリプトミス?
use File::Path;
rmtree("./dir");
ってちゃんと書いた?
じゃファイル属性を確認してちょ。
0611nobodyさん
02/09/05 04:56ID:???\r\nって\nにしちゃダメなんすか?
特に動作に問題は見当たらないしファイルサイズも削れるんで\nでいきたいんすけど。
それとも不都合な環境とかあるんでしょうか。
0612名無しさん@Meadow
02/09/05 05:34ID:???改行は、<br>で表すんだから、別に構わんです。
ただ、編集環境がwindows(MS-dos)なら、普通、¥r¥nが自動的に
つくんですが。いちいち変換するの?
0613611
02/09/05 05:48ID:???改行コード自体いまいち理解できてないんですすんまそん。とりあえず
print "Set-Cookie: $cookie\r\n";
とか
print "Content-type: text/html; charset=EUC-JP\r\n\r\n";
とかの\r\nを\nにしちゃまずいんかなと思ただけ、というか
\nでいけるならなんでわざわざ\r\n使ってるんだろうとか思ってみただけれす。
レスどうもっした。
0614名無しさん@Meadow
02/09/05 06:01ID:???http://tohoho.wakusei.ne.jp/wwwxx011.htm
0615名無しさん@Meadow
02/09/05 06:12ID:???出力だから、問題は起こらないね。
0617T女の竹田
02/09/05 11:51ID:sI+RlSZgftp://ftp.nic.ad.jp/rfc/rfc1945.txt
The line terminator for HTTP-header fields is the sequence CRLF.
However, we recommend that applications, when parsing such headers,
recognize a single LF as a line terminator and ignore the leading CR.
(訳)HTTPヘッダ領域の行末区切りはCRLFの並びです。しかし、アプリケーションが
そのようなヘッダを読み取るときは、単独のLFを行末区切りとして解釈し、続くCRを
無視することをお勧めします。
というわけで、実際問題LFだけでも問題はまずないだろうけど、正式には
CRLFだよ。
0618T女の竹田
02/09/05 11:52ID:???続くCR→前のCR
0619ゆゆ
02/09/05 12:03ID:FN8hs1rsエラーで
70行目に @Iとあるけど\@Iにするべきというエラーがでるのだけど
そんなものどこにも書いてないです。
いままで行数があってないなどありましたが、@Iというもの自体が
ない場合のエラー場所がわかりません。
何か特有の字が @Iとなったりしますか?
0620nobodyさん
02/09/05 12:17ID:???0621nobodyさん
02/09/05 13:53ID:???0622613
02/09/05 13:58ID:???\nを使うって事はアプリケーション側のサービスに甘えるってカンジすか。
とりあえずCGIを公に配布とかしたりしない限りは
こっそり\n使っちゃってもいっか、と解釈。
0623nobodyさん
02/09/05 14:11ID:???だとWindowsサーバーで動かすときとか、おかしくなることがある。
0625nobodyさん
02/09/05 14:24ID:???のように16進数でCRLFを表すのがいいらしい。
Windowsでの改行はCRLFだから、\r\nで出力してしまうと\r\r\nになってしまう罠。
0626613
02/09/05 14:29ID:???0628名無しさん@Meadow
02/09/05 14:55ID:???0629nobodyさん
02/09/05 16:18ID:FN8hs1rs>>EOF 内にHTMLのほうで使ってるまま持って来たら
InternalServerErrorに・・・。
ジャバスクリプト取ったらエラーは起こらないのだけど。
初心者わらってんじゃねーよ。
初心者をあざ笑うスレでも作ってそこでやってくれ。
解っているのなら教えてやって下さい。
初心者同士で嘗め合うことから先に進めません。
>>629
Java Script はクライアント側で動作しますので、
Perl 文法エラーの可能性が高いと思われます。
0635kusokote ◆4XfSMGTg
02/09/05 21:42ID:???◆4XfSMGTg はオープントリップ kusokote
630 と 631 は別人。
0636nobodyさん
02/09/05 22:27ID:CVMgCTHS初めてperlでCGIを書いてみたんですが動きません。
どんな原因が考えられますか?
#!/usr/local/bin/perl
require "./jcode.pl";
$object = $ENV{ 'QUERY_STRING' };
open (FILEOUT, ">./xxx.txt");
print FILEOUT @object;
close (FILEOUT);
exit;
0638nobodyさん
02/09/05 22:35ID:???jcode.pl が使われていない。
GETで受け取るため文字制限がある。
0639nobodyさん
02/09/05 22:45ID:???フォルダ内のファイル数を数えて、その数+1を新規の過去ログのファイル名にしてるんすよ。
でも、そうすると既に存在するファイルを削除した場合、当然やけどファイル数が減ってしもて
ファイル名がかぶってしまうんすよ。
何か良いファイル名の付け方知りまへんか。
ご教授よろしくお願いします。
0640nobodyさん
02/09/05 22:50ID:???0642nobodyさん
02/09/05 23:04ID:???空きが見つかるまでリピートぶん回して
open(OUT, "./log/日付とか$i.html");
0643nobodyさん
02/09/05 23:08ID:???0645639
02/09/05 23:16ID:???0646T女の竹田
02/09/05 23:55ID:???半角全角は面倒だね。Perlでやると大抵Shift-JISとかで送られてきた
文字列を処理することになるから文字の境界で苦労する。
>>628さんの言うとおり、JavaScriptでやるのがいいと思う。
ちょっと書いてみた。板違いだけど…
<form OnSubmit="txt=mainForm.messageArea.value;
while (txt.match(/[0123456789]/))txt=txt.replace(/[0123456789]/,
'0123456789'.charAt('0123456789'.indexOf(RegExp.lastMatch)));
mainForm.messageArea.value=txt;">
これで全角→半角が一応IE6ではできた。他は試してない。
mainForm.messageAreaは好きに変えてね。
0647636
02/09/06 00:15ID:GoSqrpgTけれどデコードっぽいことをしてませんが、半角カナいれたりしても何も問題がありません。
のちのちまずいことになりますかね?
>半角カナいれたりしても何も問題がありません。
EUCで書いてるからカシラ
0649nobodyさん
02/09/06 00:22ID:+YKj9Zdt俺はJAVAscriptで入力制限てどうも気に入らないんだけどどうよ?
ユーザビリティーを考えてjavascriptの入力チェックを書くことあるけど
クライアントでチェックってどうも設計上よろしくないと思っている俺。
0650636
02/09/06 00:37ID:GoSqrpgTはい EUCで書きますた
0651nobodyさん
02/09/06 00:37ID:???ここはPerlスレだからCGIと仮定するのもおかしいかもしれないけど、
「CGIでParsed headers」なら規格上 LFのみ か、 CRLF のどちらかです。
http://hoohoo.ncsa.uiuc.edu/cgi/out.html
もうちょっと詳しく言うと、CGIのヘッダというのは
HTTPサーバが解釈して、HTTPヘッダを生成するためのものなので、
フォーマットは一緒ですがHTTPのヘッダとは別物と考えるべきです。
蛇足で、NPHの場合はそのままクライアントに渡されるので、
当然CRLFにする必要があります。
0652651
02/09/06 00:38ID:???EUCで書いてあると半角カナは化けないにょろ。
何故かmacで書きこまれるとたまに化けるけど。そんときはjcodeかな。
0654初心者以下
02/09/06 00:44ID:DvbQB/jN自分のHPに素材サイトで手に入れたJavaゲーム(9面パズル)を
置いてみたのですがサーバーにアップしてDLすると
何故か遊べなくなってしまいます。
(2枚目、3枚目の画像が表示されない。タイムカウントが動かない
ゲームが始まらない)
絵を置き換えたからかな、と思い試しに
加工を加えずアップしてみましたがやはりダメでした。
ftpでアップしているのですがコレが原因なのでしょうか?
初心者ですんません。
javaは2日前に知りました。
素材サイトのゲーム http://www18.big.or.jp/~neon2/bunkatu/usa9.shtml
0656nobodyさん
02/09/06 00:48ID:???$ua=$ENV{'HTTP_USER_AGENT'};
if($ua=~/UP.Browser|DoCoMo|J-PHONE|ASTEL|PDXGW|L-mode/i){
あとはお好きに
ttp://specters.net/cgipon/labo/c_dist.html
ここの内容を要約して見たつもり。
0663T女の竹田
02/09/06 01:16ID:???うん、セキュリティから言うとJavaScriptじゃ何もしてないのと同じだしね。
この場合みたいにおまけみたいな機能ならいいかなと思った。
>>660,661だ
0667nobodyさん
02/09/06 03:28ID:???ぶっちゃけスクリプトのどこに置くのが一番効率いいんでしょうか。
とにかく先頭の方でしょうか
はたまた最下部でしょうか
それとも呼び出す直前でしょうか
どこでもいっしょでしょうか
というかなるべく使わないほうがいいんでしょうか
自分では調べられないので教えてくださいまし。
0668nobodyさん
02/09/06 03:50ID:???0669667
02/09/06 03:51ID:???0670名無しさん@Meadow
02/09/06 05:32ID:dZ6p0GwtIE5.5ではできんかった。というよりINPUT TYPEとかも書いてほしい。
>>649 よく理解できんです。
サーバーのデータベースに直接アクセスするとかソースを見られて
はいけないものは、CGIだけど、それ以外は、なるべくサーバーに
負荷がかからないクライアントサイドのJavaScriptで処理した方が
いいのでは。
まあ、JavaScriptをOnにしてくださいと書くのは面倒というのはある。
テキストブラウザとかだとJavaScriptできないし。あとJSのバー
ジョンとかNSとIEの違いによるサポート状況の違いとか面倒。
>>627 もう来ないか。textareaだかで受け取ったデータの中の
全角<->半角変換スクリプト:
$input = "012344567899012";
@zenkaku=('0', '1','2','3','4','5','6','7','8','9');
@hankaku=('0','1','2','3','4','5','6','7','8','9');
$sw = 1;
if ($sw == 1) {
&zen_han(\@zenkaku,\@hankaku);
} else {
&zen_han(\@hankaku, \@zenkaku);
}
sub zen_han {
my ($A, $B) = @_;
for $i (0 .. 9) {
$input =~ s/@$A[$i]/@$B[$i]/g;
}
}
print $input, "\n";
0671nobodyさん
02/09/06 06:55ID:HPly/0Dw0672nobodyさん
02/09/06 06:59ID:???http://www.google.co.jp/search?q=%83A%83N%83Z%83X%90%A7%8C%C0%82%CC%8Ed%95%FB
0673nobodyさん
02/09/06 07:04ID:???regist.cgiの中の
unlink("$logdir$in{'no'}\.cgi");
unlink("$logdir$in{'no'}\.dat");
なのですが、unlinkでエラーを返してきます。
和鳥だとunlinkは使えないのでしょうか?
0674nobodyさん
02/09/06 07:14ID:???早くどうにかしてください。
0675nobodyさん
02/09/06 07:20ID:???板違いかな
http://pc.2ch.net/perl/
こっちちゃう
0676nobodyさん
02/09/06 07:23ID:???板違いかな
http://natto.2ch.net/denpa/
こっちちゃう
0678nobodyさん
02/09/06 15:15ID:???0680ぱぴぷぺ
02/09/06 17:41ID:UnlQ9r36と考えてるんだけど、モジュールとか使わない場合、
XBMつーーのがあるのを知ったのですが、
これはモノクロのみカラーは絶対ダメ?
0681nobodyさん
02/09/06 18:28ID:???>動的に画像をブラウザに表示
なら、Location、binmodeで吐く
「動的に作成した画像をブラウザに表示」
なら、GDが無難か?ファイルにもよるか…
0682nobodyさん
02/09/06 18:31ID:???xbm,xpmはIEで表示できたっけ。
0683名無しさん@Meadow
02/09/06 20:35ID:???perlによる日本語の扱いはeucにするのが常識。
0686nobodyさん
02/09/06 23:31ID:???■ このスレッドは過去ログ倉庫に格納されています