CGIとかPerlとか超初心者なんだけど、
■ このスレッドは過去ログ倉庫に格納されています
0001埼玉板"管理人"
2001/07/20(金) 17:36ID:???が非常に高くなってきたのです。
http://green.jbbs.net/travel/511/saitama.html
ス連でも相談にのってもらってるんだけど、ここでも相談したい。
とりあえずFTPって何?どういうふうに使うの?
0103nobodyさん
02/06/18 17:15ID:???パーミッションを777で使うとどう危険なんですか?
また、特定のディレクトリ内に新規ファイルを作成・更新していく
場合は777じゃなくてもできるのでしょうか。
0104nobody
02/06/18 20:41ID:aBkTtCEX聞くより自分で調べろヨ・・
ttp://www.google.co.jp/search?hl=ja&ie=utf8&oe=utf8&q=permission+777&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
0105nobodyさん
02/06/18 22:39ID:???http://pc.2ch.net/test/read.cgi/php/1019487717/31
0107nobodyさん
02/06/20 23:22ID:???全く分かりません。Parlのパス程度しか弄ってないし、
その他の設定も説明通りにやってるし。
何か分かりませんか?
0108nobodyさん
02/06/20 23:53ID:???0109nobodyさん
02/06/21 01:18ID:???出っ放しなんですよ。おかしい箇所はないと思うしパーミッションも正しいのですが・・・
0110nobody
02/06/22 01:27ID:???そのWebFormの初期設定でも見直しなさい
0112nobodyさん
02/06/29 08:47ID:???0114nobodyさん
02/09/14 21:11ID:???ソース全面的に見直しているのですが、わかんないところがあるので教えて下さい。
・ハッシュと配列の差
・変数名の長さ
前者は消費メモリ量を見てもあまり差が出てこないので(ActivePerl使用)、
実装は整数をキーとしたハッシュなんじゃないかなと思っているのですが、
抜けの多い、範囲のでかいデータ量の少ないテーブルをハッシュに読み込むところを
配列に読み込んでも良いのか決めかねてます。
後者ですがそのまんまです、短い方が良いのでしょうか。
現在変数名に15〜20文字くらい平気で使っているのですが、
短くすればそれなりの効果は出てきますか。
やっぱり誤差程度でしょうか。
0115nobodyさん
02/09/14 23:28ID:???データ量大→ポインタ(リファレンス)
不要な変数(特にグローバル)→削れ
変数名(名前空間)→そりゃ短い方がそれなりに…
ファイル読出し→適した方法で
後は、myとか関数レベルのものもあるけど
基本的に、一般配布されるようなモノは不要なコメント及び変数が多い
どうでもいいが、Perlでやってる以上、どうしようもないかと
0116nobodyさん
02/09/15 10:19ID:???perlのパスていううのはわかるんですが、
#! て何?
usr て何?
bin て何?
0117nobodyさん
02/09/15 13:56ID:kYEyD4Vxeucに変換するコードがうまく働きません。
perldoc Jcodeの説明を参考にして、次のようなコードを
作りました
#$sjkeyは、base64に変換されたshift-jis(?)文字列
$jcode = Jcode->new($sjkey);
$jcode->mime_decode;
$euc = $jcode->euc;
これで、$eucには、eucに変換された文字列が入るはず
なのですが、実際には次のようなbase64のままの文字
しか$eucには入りません。
%uFF95%uFFFA%uFF91%uFF97
base64をデコードして、それをeucに変換する、のは
cgiの基本の基本のはずなのですが、分かりやすい書籍
などでも、分かりやすく説明したものが見つかりません。
ご指導いただけると、助かります。
0118nobodyさん
02/09/15 14:20ID:???その文字列は、 MIME-Header documented in RFC1522 に準拠しているのか?
そしてそれは本当にBase64でエンコードされているのか?
単純にBase64でエンコード、デコードするなら、MIME::Base64使うよ。
0119nobodyさん
02/09/15 14:36ID:???0120nobodyさん
02/09/15 14:50ID:???0121nobodyさん
02/09/15 16:05ID:kYEyD4Vxもう少し、状況を詳しくご説明いたします。
MacOSX用Internet Explorer5.2で「放送」という文字列を
JavaScriptの変数wordに代入して、escapeします。:
(1) word = escape(word);
それをcookieに保存して:
(2) document.cookie = word=' + word + '; path=/;';
そのcookieをperl/cgiから読ませます:
(3) @key_value = split(/;s/, $ENV{'HTTP_COOKIE'});
(1,2,3)により、「方法」が
(4) %uFF95%uFFFA%uFF91%uFF97
となってしまいます。この(4)をeucの「放送」に戻す方法
を探していました。
ある方から、(4)がUnicodeに対応しているようなので、
(5) $s1 =~ s/%uFF([A-F0-9]{2})/pack 'H*', $1/eg;
を使え、というご指導を受けました。「放送」を含む多くの文字が、
(5)のコードで、正しく処理できました。しかし、「資本」という文字
は、(1,2,3)の処理をすると、(6)に変換され、
(6) %uFF8E%uFF91%uFF96%7B
(5)の方法で(6)を変換すると、最後の%7Bが変換されずに、(7)のように
なります。
(7) 資%7B
よろしくご指導をお願いいたします。
0122あぼーん
NGNG0123nobodyさん
02/09/16 00:56ID:???$s1 =~ s/%uFF([A-F0-9]{2})/pack 'H*', $1/eg;
$s1 =~ s/%([A-F0-9]{2})/pack 'C', hex $1/eg;
0124nobodyさん
02/09/16 11:06ID:Ah3SHnxoありがとうございます。教えていただいた方法で、
「放送」も「資本」も正しくperl/cgi+JavaScript
で処理できました。これでほとんどの文字が正しく
処理できるようになりました。
しかし、極少数の文字は、正しく処理できません。
例えば、「頒布」をMacOSX用IE5.2のJavascriptで
escapeしてcookieで保存したものを、perl5.8のコー
ドでそのcookieを読ませると、「頒布」という文字が:
(1) %uFF94%u0415z
となり、教えてただいた方法では、元の「頒布」に戻せ
ませんでした。
教えていただいた方法で、大多数の文字は処理できるので、
(1)は深刻な問題ではありませんが、もしも解決する方法が
あれば、ご指導下さい。
0126nobodyさん
02/09/16 23:48ID:Ah3SHnxoありがとうございます。探していた情報は、まさにご指摘頂いた
サイトにありました。
$sに代入された値を*sでサブルーチンに渡す、というこれまで
使ったことのないコードのためが、UTF-16のデコードには、
まだ成功しておりません。
&simaguni'decode8(*s,'euc');
perl -wの"-w"やuse strictも外さないと、この関数は
エラーが出るようです。
0127nobodyさん
02/09/17 00:24ID:yAKo74Faapacheサーバーでperl/cgiを使っています。perl/cgi
だとユーザーからのリクエストを受けてから、
(1) perlが起動され、
(2) cgiスクリプトがコンパイルされ、
(3) コンパイルされたスクリプトが実行される
という作業が行われるために、mod_perlに比べて、「遅い」
という話を聞きます。
しかし、アクセス数の少ない私のサイトで自作したperl/cgiを
使っていると、「早い」と感じます。どう考えても、毎回、
(1,2,3)のプロセスが実行されているとは考えられません。
1度実行されたperl/cgiスクリプトはコンパイルされた状態で
キャッシュかなにかに保存されるために、2回目以降は、(1,2,3)
のプロセスの一部が省略されているのでしょうか?
それとも、perlという言語は、(1,2,3)の作業が異常に早いので
しょうか?(Javaでは、短いコードをコンパイルするのにも、
結構、待たされるので、なぜperlだと待ち時間がないのか不思議
です。)
0129nobodyさん
02/09/17 14:26ID:???○サーバ
0130nobodyさん
02/09/17 20:46ID:AMfRDk5e> $s1 =~ s/%uFF([A-F0-9]{2})/pack 'H*', $1/eg;
> $s1 =~ s/%([A-F0-9]{2})/pack 'C', hex $1/eg;
皆様のおかげで,%xx形式のデータを日本語文字に
変換することができ,本当に感謝しております。
実はもう1つお願いがございます。
「放送」という文字列を,%95%FA%91%97という
符号に変換する方法を教えていただけないでしょうか。
(Jcodeを使って自分でやろうとしたのですが,どうして
もうまくいきません。もし可能であれば,Jcodeを使わ
ない:
$s1 =~ s/xxx/yyy/zzz;
とう方法を教えていただけると自分でも使えるので,
助かります。
0131nobodyさん
02/09/17 20:52ID:???0133nobodyさん
02/09/17 22:14ID:yAKo74Fa教えていただいた:
(1) $s =~ s/xxx/yyy/zz;
の方法で日本語のデコードもエンコードもうまく行きました。
本当にありがとうございました。
0134nobodyさん
02/09/17 22:33ID:yAKo74Fa> use URI::Escape;
上の文字列でGoogleを検索して、%xx形式が、"strings as
defined by RFC 2396"というように呼ばれているのが
分かりました。ありがとうございます。
Jcodeにあるencode(), decode()で処理できると誤解して
おりました。use URI::Escapeという別のモジュールを
使うわけですね。
日本語処理は、難しいですね?
0135nobodyさん
02/09/17 22:59ID:???0136nobodyさん
02/09/17 23:05ID:???ファイル読み込みだけのときもlockしたほうが良いもんですかい?
open(IN,"hoge")
flock(IN, 2);
@hoge = <IN>;
close(IN);
0138nobodyさん
02/09/18 00:44ID:???0140nobodyさん
02/09/18 04:55ID:83u7sqxbいいえ、別に難しいとは思いませn
ただ、一人勝ちの英語に比べるとずいぶん損してるなぁとは思う
英語圏の奴らは内容にどっぶり浸かれるもんな
0141あぼーん
NGNG0142バカ
02/09/19 14:36ID:5bUuU7rG#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "<html>\n";
print "<head><title>test</title></head>\n";
print "<body>\n";
$n = int(rand(3));
print "<img src=./$n.jpg><BR>\n";
print "</body>\n";
print "</html>\n";
このまま2ch運営さんにリンクしてもらってもダメですよね。2.jpgとかを、そのまま送りだすにはどうしたらよいでしょうか?
「おまえの頭じゃcgiは無理だ」は無しの方向で。
0143nobodyさん
02/09/19 14:46ID:???$n = int(rand(3));
print <<"EOF"
Location: ./$n.jpg
EOF
exit;
__END__
0144バカ
02/09/19 14:51ID:5bUuU7rGこれから解読にとりかかって、わからなかったら股きます(*´∀`)ノバイチャ
0147nobodyさん
02/09/19 15:41ID:???0148nobodyさん
02/09/19 16:19ID:???Locationは相対パスじゃ飛べないブラウザあるぞ。
Locationの前にcontent-type出さないとエラー出すブラウザもあるぞ。
0149nobodyさん
02/09/19 16:28ID:???0150nobodyさん
02/09/19 16:41ID:???どゆのがレベル高いんでしょ?
>>142
画像は0.jpg〜2.jpgでいいのかな?
#!perl
print "content-type: image/jpeg\n\n";
open(IN,int(rand(3)).'.jpg');
print <IN>;
close(IN);
こんなんつくって、<img src="">で呼び出してあげるんじゃ
だめ???
143じゃないですよ?
なんか違う意味でまたなのかな???
0157nobodyさん
02/09/19 22:49ID:???これらの発言は、Perlを憎む某によって書き込まれています
気にしないで下さい
プログラム板のRubyスレとPerlスレ見れば分かる
例えば:http://pc3.2ch.net/test/read.cgi/tech/1028906179/206-
#!perl
use Inline Ruby;
main();
1;
__END__
__Ruby__
def main
print "content-type: image/jpeg\n\n"
file = open( "#{rand(3)}.jpg" )
print file.read()
file.close()
end
0159nobodyさん
02/09/19 23:58ID:???Inlineはppmで逝けるけど
Inline::Rubyがないので、気合いれてコンパイルすれば...
http://search.cpan.org/author/NEILW/Inline-Ruby-0.02/lib/Inline/Ruby.pod
>>161
Rubyよくわからんけど、Inline::RubyはXSモジュールなんで
コンパイルが必要。Rubyのソースも必要みたい。
>>163
>>143はエラー>>158はネタなので>>153で
0167nobodyさん
02/09/20 08:30ID:OP5C6/Ba(・∀・)イイ
0168nobodyさん
02/09/20 16:22ID:ctJiuFnGちなみに、普通のhtmlページは表示されます。
ページを表示できません
検索中のページには問題があるため表示できません。
--------------------------------------------------------------------------------
次のことを試してください:
localhost ホーム ページを開いてから、表示する情報へのリンクを探してください。
[更新] ボタンをクリックするか、後でやり直してください。
[検索] ボタンをクリックして、インターネット上の情報を検索してください。
関連したサイトの一覧 も表示できます。
HTTP 500 - 内部サーバー エラー
Internet Explorer
0169nobodyさん
02/09/20 16:31ID:eZg18XK5それはあなたのCGIが正常に機能していないためと思われます。
Perlでしたら、そのプログラムをコマンドラインで動かしてみれば
よろしい。コマンドラインがやなら、copalというプログラムを
インストールしてやってみるとよい。エラーメッセージが出る
はずです。それに従ってCGI(Perl)ファイルを修正してやり直し
すればよい。
500 Internal Server Error
なので、プログラムがおかしいのでは・・・
せめてデーモンなにつかってて言語は何つかててとか
書けない?
【Perl】初心者コーナースレ
http://pc.2ch.net/test/read.cgi/php/1032070299/l50
の方が正統なスレだと思うんだけど、移動しなくてよいの?
じゃぁこのままで^^;
0175nobodyさん
02/10/01 07:57ID:ax7rnh/7CGIで使う場合、perlccで実行ファイルにしておいた方が速いのでしょうか。
man perlccすると実験的な段階なので動作を保証しないといったことが書か
れてありますので、正常動作が確認された場合に限ってお聞きします。
0176nobodyさん
02/10/01 08:18ID:???print "Hello World";
をperlccでstaticにコンパイルしたら800KB以上になったのでやめたことがあります。
0177nobodyさん
02/10/01 09:03ID:???うちょっ、と思てやってみたら、
526249バイトになりました。だいたい合ってますね。
メッセージ見ると要らないライブラリまでincludeしてるような感じ。
もちょっと大きいスクリプトでやってみると、増大比率は少なくは
なりました。うーん、perlcc使ってるって話し聞かないとこ見ると
速さもあまり期待できないのかな。perlccってperlインストしてな
い人にプログラム渡すのに使うぐらい?
0178nobodyさん
02/10/01 09:18ID:ax7rnh/7って話ありますか?ヒントとか参照HPでもいいですので、教え
てくらはい。
Storableモジュールは高速化のために中核部分をCで書いていると
ドキュメントの中で謳っています。
0180nobodyさん
02/10/01 15:59ID:???情報ありがとうございます。
今度、StorableモジュールとやらをCPANからもらって、
調べてみます。見通しが付いたら、両方で書いて(Perl単独およびPerl+C)、
速度比較でもやって見ます。
0183nobodyさん
02/10/08 15:14ID:???調べた結果はどうだったんだろう^^;
0186nobodyさん
02/10/15 13:08ID:???0187山崎渉
03/01/15 13:49ID:???0188y
03/02/02 18:18ID:NYuXUMpJで,インターネットテンポラリーファイルとクッキーを削除したら
クッキーが復活しません。
どうしたらいいですか?
0189nobodyさん
03/02/04 09:06ID:???0190nobodyさん
03/03/05 01:53ID:???http://www.finaldata.ne.jp/
これを使え。
0191山崎渉
03/03/13 17:21ID:???0192山崎渉
03/04/17 12:22ID:???0193山崎渉
03/04/20 06:11ID:???( ^^ )< ぬるぽ(^^)
0194nobodyさん
03/04/20 23:42ID:???yy-bbsを使っているんですが、書き込みをすると
Write Error : ./past/1.dat
とエラーがでます。今までは書き込めていたんですが…
修正方法を教えてください。
お願いします。
0197nobodyさん
03/04/23 14:36ID:Y+rCnBKsひとつの配列にして1行ずつファイルに保存したいんですが
foreach $tmp (@arraytmp) {
print FILE $tmp;
}
@arraytmpのなかに
arraytmp[0]=100
arraytmp[1]=200
arraytmp[2]=300
とはいっていて
追加したデータがarraytmp[1]=200だとすると
出来上がったファイルには
100200
300
と保存されてしまいます。なぜでしょうか?
0198nobodyさん
03/04/23 15:01ID:ri9RwL1rforeach $tmp (@arraytmp) {
chomp $tmp;
print FILE "$tmp\n";
}
0199nobodyさん
03/04/23 15:25ID:Y+rCnBKs改行コードのごみだったんですね。
ありがとうございます。
0200nobodyさん
03/04/24 01:57ID:???サイトの更新に流用してみようかと思っていますが
シンプルな設計の物が見つかりませんが(ソースをのぞいて改造できるような)
誰か作って
0201nobodyさん
03/04/24 21:41ID:???百合の脳ではどんなにシンプルなソースでも無理だろ。
悪い事はいわねぇから、一生シコってろ。
0202nobodyさん
03/04/25 16:13ID:pfyzLZQqXXX.XXX.XXX,1000
AAA.AAA.AAA,900
BBB.BBB.BBB,800
と保存されているのを
2次元配列に読み込むには
どうプログラムを書けばよろしいでしょうか?
ARRAY[0][0]=XXX.XXX.XXX ARRAY[0][1]=1000
ARRAY[1][0]=AAA.AAA.AAA ARRAY[1][1]=900
こんな感じに入れたいです。
■ このスレッドは過去ログ倉庫に格納されています