【Perl】初心者コーナー Part19
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
03/02/09 00:24ID:s0tpWWxg1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
CGIだけど、なんか質問ある? Part 9
http://pc.2ch.net/test/read.cgi/php/1041530204/
参考書籍の話題は【Perl,CGI】参考書籍 第三版
http://pc.2ch.net/test/read.cgi/php/1030209573/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般/Part2】
http://pc.2ch.net/test/read.cgi/php/1030548610/
スクリプトの改造依頼は 【 スクリプト改造工房 PART 5 】
http://pc.2ch.net/test/read.cgi/php/1028193595/
あとは>>2-10。
0002nobodyさん
03/02/09 00:25ID:s0tpWWxgPart1 http://tako.2ch.net/test/read.cgi?bbs=perl&key=957208980 参照不能
DAT: http://tako.2ch.net/perl/dat/957208980.dat
Part2 http://tako.2ch.net/test/read.cgi?bbs=perl&key=971817087 参照不能
DAT: http://tako.2ch.net/perl/dat/971817087.dat
Part3 http://tako.2ch.net/test/read.cgi?bbs=perl&key=979894521 参照不能
DAT: http://tako.2ch.net/perl/dat/979894521.dat
Part4 http://tako.2ch.net/test/read.cgi?bbs=perl&key=984430156 参照不能
DAT: http://tako.2ch.net/perl/dat/979894521.dat
Part5 http://pc.2ch.net/php/kako/988/988728069.html
Part6 http://pc.2ch.net/php/kako/996/996075607.html
Part7 http://pc.2ch.net/php/kako/1000/10002/1000267444.html
Part8 http://pc.2ch.net/php/kako/1003/10039/1003900311.html
Part9 http://pc.2ch.net/php/kako/1009/10095/1009549309.html
Part10 http://pc.2ch.net/php/kako/1014/10145/1014556702.html
Part11 http://pc.2ch.net/php/kako/1017/10172/1017201229.html
Part12 http://pc.2ch.net/php/kako/1019/10199/1019917048.html
Part13 http://pc.2ch.net/php/kako/1022/10227/1022731565.html
Part14 知らん
Part15 http://pc.2ch.net/php/kako/1028/10288/1028816385.html
Part16 http://pc.2ch.net/php/kako/1032/10320/1032070299.html
part17 http://pc.2ch.net/php/kako/1034/10345/1034583844.html
part18 http://pc.2ch.net/php/kako/1037/10377/1037797479.html
part19 http://pc.2ch.net/php/kako/1042/10422/1042260745.html
[ひまぢん氏のミラー]
Part1 http://www.angelfire.com/ak5/2ch-web-program/kako/957208980.html
Part2 http://www.angelfire.com/ak5/2ch-web-program/kako/971817087.html
Part3 http://www.angelfire.com/ak5/2ch-web-program/kako/979894521.html
Part4 http://www.angelfire.com/ak5/2ch-web-program/kako/984430156.html
Part5 http://www.angelfire.com/ak5/2ch-web-program/kako/988728069.html
0003nobodyさん
03/02/09 00:25ID:BxWrsuOv0004nobodyさん
03/02/09 00:25ID:???・Perl Com: http://www.perl.com/pub/
・CPAN.com: http://search.cpan.org/
・ActivePerl: http://www.activestate.com/
・CGI-ML:http://forest.ne.jp/cgi-ml/
[お薦め]
・Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm ★読んどけ
・Perl Recipes: http://www.effectiveperl.com/recipes/
・Randal's WebTechniques columns: http://www.stonehenge.com/merlyn/WebTechniques/
・Perlの部屋: http://www.cc.rim.or.jp/~midorin/mad-p/perl/index.html
・Perl初心者の部屋:http://www.harukaze.net/~mishima/perl/
・Perlリファレンス:http://www.big.or.jp/~mio/ga/pl/plref/pl_ref.htm
・Perlのページ:http://homepage1.nifty.com/nomenclator/perl/
0005nobodyさん
03/02/09 00:25ID:???・Perl News: http://www.news.perl.org/
・Perl Monks: http://www.perlmonks.org/
・use Perl; : http://use.perl.org/
・Learn Perl - Perl Education: http://www.devdaily.com/perl/edu/index.shtml
・Perldoc.com: http://www.perldoc.com/
・Using Perl5 in Web: http://docs.rinet.ru/Using_Perl5_in_Web/
・Rex Swain's Home Page: http://www.rexswain.com/
・Robert's Perl Tutorial: http://www.netcat.co.uk/rob/perl/win32perltut.html
・Perl Tuts: http://savage.net.au/Perl-tutorials.html
・Beginning Perl Tutorials: http://www.pageresource.com/cgirec/index2.htm
・jcode.pl の私的な解説書: http://www.mikeneko.ne.jp/~lab/kcode/jcode.html
・Logical Choice Software, Home Page: http://www.logsoft.com/perltips/
・Perlfect Solutions: http://perlfect.com/
・The Perl Archive : http://www.perlarchive.com/
・Perl6 & Parrot VM についての情報: http://dev.perl.org/perl6/
・use Object; : http://perl.infoware.ne.jp/
00061
03/02/09 00:26ID:???0007nobodyさん
03/02/09 00:26ID:???0009nobodyさん
03/02/09 00:29ID:???Part14 http://pc.2ch.net/php/kako/1026/10269/1026977659.html
0012nobodyさん
03/02/09 00:41ID:???0013本7 ◆HON7/awDa.
03/02/09 02:17ID:???http://hon7.hp.infoseek.co.jp/cgi-bin/test/bbs.txt
と
http://hon7.hp.infoseek.co.jp/cgi-bin/test/trip.txt
を組み合わせて掲示板にトリップ機能を付けたいんですがどこにどう入れたらいいのかわかりません。
またどいう加工とが必要でしょうか?
もし他に2ch仕様のトリップ付く方法があればそちらでも結構です。
よろしくお願いします。
0014nobodyさん
03/02/09 02:25ID:???テンポラリファイルを作ってそこにデータを書き込んでからrenameして、実際のデータファイルとする、
という作業がありますが、
この作業はSDBMなどのデータベースを扱っている場合でもすべきでしょうか?
0015nobodyさん
03/02/09 03:22ID:???if unless while foreach for は制御構文
my our local return use require sub はキーワード
time localtime substr split join は関数
0016nobodyさん
03/02/09 03:23ID:???0017nobodyさん
03/02/09 03:25ID:???困った。わけわからん。
0019nobodyさん
03/02/09 05:03ID:???それでOKだよ。
my宣言する変数は基本的にすべて () でくくっておけば問題ない。
(ただし初期化したいときだけは注意)
0021nobodyさん
03/02/09 08:28ID:???変数に代入したいんですがどうすればいいですか?
アップローダーとか参考にしたら、保存してしまうので
あまり参考にはならないのですが…
よろしくお願いします。
0022nobodyさん
03/02/09 08:35ID:???0023nobodyさん
03/02/09 08:59ID:BDYUFdWT<FORM METHOD="POST" ACTION="./cart.cgi" target="top">
てな感じでフレームで分割してかごの中身を表示したいのですが、
単体だとうまく動くのに、フレーム内だと、データを渡せないのか
確認画面でかごの中身が空になってしまいます。
ttp://openlab.ring.gr.jp/k16/htmllint/htmllintl.html
↑では、
<FORM> の属性 `TARGET` はあまり薦められない属性です。
と言われてしまいました。なんとかフレーム分割したいのですが・・・。
よろしくお願いします。
0025本7 ◆HON7/awDa.
03/02/09 13:10ID:???>>13
>>13
>>13
>>13
>>13
>>13
>>13
>>13
>>13
>>13
>>13
>>13
何とかしてくれー!
0026nobodyさん
03/02/09 13:16ID:???【 スクリプト改造工房 PART 5 】
http://pc2.2ch.net/test/read.cgi/php/1028193595/
0027nobodyさん
03/02/09 13:52ID:???フレームセットのファイルをA、フレーム内のファイルをB,Cとすると、
action="A" target="_top" として、まずAが変数を受け取って
B,Cに変数を渡す下準備をする。もちろんAはCGIでなくてはならない。
Aは、B,Cを frame src="B?変数名=変数" てな感じで呼び出す。
B,Cはそれぞれ渡された変数を元に画面表示する。
>>24がいうようにJavaScriptやcookie使った方がいいだろうなぁ・・・
0028nobodyさん
03/02/09 15:15ID:???トリップ機能のある掲示板のソース研究すれば?
配布してるのでもあるよ。検索してみれ。
002923
03/02/09 17:10ID:XYLtLJwJcookie使ってるんで、そのへんかなぁ・・・?
0030nobodyさん
03/02/09 17:17ID:???スレ違いっぽいけど、、
どんな形でデータの受け渡しが行われるかの
情報が無いのでなんとも言えません。
another-htmllintのあまり薦められない属性は、
loose.dtdで書いている限り無視で構いません。
>>25
トリップなんて好きな所に埋め込めばいい。
どうしてもというなら、キャップ処理の前後。
0031本7 ◆HON7/awDa.
03/02/09 17:27ID:???トリップ処理の方の$inを$FORMに変えて入れてみたらざなぜかエラーに
ブラウザにエラー行返して見たらトリップ機能の2行目でエラーらしいんですよ。
なぜでしょうか?
0033本7 ◆HON7/awDa.
03/02/09 18:10ID:???Software error:
Unrecognized character \x81 at /home/h/o/n/hon7/cgi-bin/test/bbs.cgi line 398.
For help, please send mail to the webmaster (ops@infoseek.co.jp), giving this error message and the time and date of the error.
とでます。ソースは
http://hon7.hp.infoseek.co.jp/cgi-bin/test/bbs3.txt
を更新しました。よろしくです
0034nobodyさん
03/02/09 18:18ID:+X3kwgjb$TEST = '(テスト)';
これをeucに変換して検索してもうまくいきません。
0036nobodyさん
03/02/09 18:36ID:???それは謎。とりあえず、
397行 my $trip;
406行 foreach my $key ('FROM', 'MESSAGE', 'mail') {
に変更。
0038nobodyさん
03/02/09 18:57ID:???うちでその行だけテストしてみたけど、普通に置換できるんだよね。
なんでだろう。ソースの文字コードが違うのかな。
もしだめなら、これでどうだ。やってることは一緒。
$FORM{'FROM'} =~ s/\x81\x9f/\x81\x9e/g;
0039本7 ◆HON7/awDa.
03/02/09 20:15ID:???でもまだ問題があってindexを開いた際にクッキー情報の名前もトリップ変換してしまい名前欄を
はみだしてしまいます。
396行の名無しさん処理のunless()のあとelse{}で398行〜425行のトリップ処理を加えました。
これを何行目あたりに入れることでこのバグを回避できますか?
自分でも悩んでるんですどうも全体の流れがつかめないもので・・
こちらでソースは更新しました。
http://hon7.hp.infoseek.co.jp/cgi-bin/test/bbs3.txt
よろしくお願いします
0041本7 ◆HON7/awDa.
03/02/09 20:37ID:???0042nobodyさん
03/02/09 21:07ID:???自分なりに
1、 210.135.129.41 を点ごとに4つに分解
2、分解した後ろ3つと日付を掛ける [135] * [129] * [41] * [day]
3、数字からひたすらアルファベットに置き換える
としているんですが、全くランダム制がなく困っています
0046nobodyさん
03/02/09 22:04ID:???どうやら先頭2文字がsaltそのままみたいですね
とりあえず、先頭の文字だけ切って表示するようにしときます
0047nobodyさん
03/02/10 00:36ID:???書き込みボタン押して本文が無かったらリロードというのをしたいです。
どうもうまくいかないみたいで・・・
ご教授お願いします。
0048nobodyさん
03/02/10 00:46ID:???どううまくいかないの?
上のほうにもあるけど、「うまくいかない」だけじゃわかんないよ。
どうなるか必ず書くこと。エラーメッセージもあれば書くこと。
0049nobodyさん
03/02/10 00:46ID:???0051nobodyさん
03/02/10 04:15ID:???SDBMにはロック機構がないようなので、
独自で排他処理をしないと駄目な感じですね。
ファイルロックで包む例。
ttp://cat.zero.ad.jp/mouse/download/log/dblog2/ezlog_cgi.txt
もしくは、MLDBM::Sync モジュールを使う。
http://www.perldoc.com/cpan/MLDBM-Sync-0.07.tar.gz.html
0052nobodyさん
03/02/10 04:20ID:???テンポラリファイルを使うのはいかがなものかと。
005350
03/02/10 04:35ID:lunjJQvXSDBMをファイルロックで包む例はよくあるんだけど、
>>52さんの言うように
テンポラリファイルを使う例があまりないみたいなので質問してみたんですが、
どうなんでしょうかね?
ファイルロックが完璧ならばテンポラリファイルを使う必要もないと思うんですが。
0054実は…51==52
03/02/10 05:05ID:???flockが不安定または使えない場合は、
symlinkとかmkdirの擬似的なロックでもいいと思います。
DBM処理系によっては複数のファイルを作成したりしますので、
テンポラリは結構面倒かもしれません。
0055超初心者
03/02/10 11:47ID:MIMhYBnEトータル・今日・昨日をカウントさせたいのですが、
昨日・今日が上手くカウントしてくれないです。
0056超初心者
03/02/10 11:48ID:MIMhYBnEprint "Content-type: text/html\n\n";
$logfile = './1.txt';
$ENV{'TZ'} = "JST-9";
$mday = (localtime(time))[3];
open(IN,"$logfile");
$coall =<IN>;
$cotod =<IN>;
$coyes =<IN>;
$day =<IN>;
close(IN);
chop $coall;
$coall++;
if($mday != $day){
$coyes = $cotod;
$cotod = "0";
$day = $mday;
}
chop $cotod;
$cotod++;
open(OUT,">$logfile");
print OUT "$coall\n";
print OUT "$cotod\n";
print OUT "$coyes\n";
print OUT "$day\n";
close(OUT);
print <<"HTML";
累計$coall人<BR>今日$cotod人<BR>昨日$coyes人
HTML
0057nobodyさん
03/02/10 12:33ID:???改行の扱い方が悪し。
とりあえず下記の変更でも動くけれど、良くないね。全体的に見直すべし。
close(IN);
chop $coall;
chop $cotod;
chop $coyes;
chop $day;
$coall++;
if($mday != $day){
$coyes = $cotod;
$cotod = "0";
$day = $mday;
}
#chop $cotod;
0058超初心者
03/02/10 14:42ID:MIMhYBnE有難う御座いました。勉強になりました。
0059nobodyさん
03/02/10 22:19ID:???>>33
Unrecognized character \x81 と来たときには全角スペースがないか疑え。
(全角スペースはシフトJISで\x81\x40)
0060nobodyさん
03/02/10 22:57ID:0mJjU+k6どうしたらいいですか?
色々試してみたんですがやりかたがわかりません
例えば↓のチャットを、自分独自の
自動更新チャットに作りかえるにはどうしたらいいですか?
http://www.tcup6.com/cgi-localbin/chat8.cgi
(別のところからログファイルだけ更新できるようなイメージ)
0061↓新語
03/02/10 22:59ID:???0062nobodyさん
03/02/10 23:04ID:???0063nobodyさん
03/02/10 23:09ID:???自分のパソコンの中に作った「Web」っていう名前のフォルダですか?
0064nobodyさん
03/02/10 23:15ID:???http://www.google.co.jp/search?q=+Web%83t%83H%83%8B%83_&ie=Shift_JIS&hl=ja&btnG=Google+%8C%9F%8D%F5&lr=lang_ja
0066nobodyさん
03/02/10 23:58ID:???トップのページ
http://www16.u-page.so-net.ne.jp/xb4/katsumi/os/windows/webdav/
閲覧するとポートをガンガン叩いてくるんですけど…。
0068nobodyさん
03/02/11 12:23ID:1RQcCB3w掲示板を作っていて、
名前とメール部分のクッキーの設定は上手く行ったんですけど、
URL欄のクッキー情報が上手く保存されません。
調べてみたら、http:のコロンが原因だとかなんとか・・・?
どう対処したら良いのか教えて下さい。。
0069nobodyさん
03/02/11 12:33ID:???0070nobodyさん
03/02/11 12:48ID:???http://www.2ch.netクッキーに
とクッキーに保存するんじゃなくて
www.2ch.net/
とクッキーに保存する
0071nobodyさん
03/02/11 12:58ID:???0072nobodyさん
03/02/11 13:25ID:???0073nobodyさん
03/02/11 13:37ID:???-------------
aaa,bbb,ccc
ddd,eee,fff
ggg,hhh,iii
-------------
とあったとして、真ん中の行のみ書き換えるにはどうしたらいいんでしょう?
私のIQでは思いつきません
0074nobodyさん
03/02/11 14:21ID:???こころの眼でみるのです。
0075行頭じゃなくてもソートできるの?
03/02/11 15:22ID:QuXhKMT3の列からなるCSVファイルを読み込んで
2番目以降の列(例えば名前の列)でSortしなおすことはできますか?
もしかして順番変えたテンポラリファイルを作らないとダメですか?
0076nobodyさん
03/02/11 15:27ID:mp4tOM/v$set{top_path} = '../';
のように%setのハッシュにしてるのですが
こういうのって格好悪いですか?
一度全て読み込み、書き換えてから書き戻すしかないね。
>>75
テンポラリファイルなんて使わなくてもできるよ。
データが巨大ならデータベースを使った方がいいと思うけどね。
>>76
格好はどうでもいいけど、
要素名のタイプミスをするとすぐ発見できないのが面倒かもね。
あと、若干だけど効率も悪いかな。
0078nobodyさん
03/02/11 17:04ID:???名前の列でソートするならこんな感じ。
データが多いとちょっと重いかもしれないが。
@hoge = sort { (split(/,/, $a))[1] cmp (split(/,/, $b))[1] } @hoge;
>>76
自分は最近それと似た方法で定数を記述してる。
my %const = {
HOGE => '../',
HUGA => 100
};
こんな感じで。
まあ、確かに効率は悪いけど、見た目がきれいだし、定数だというのが
はっきり分かるから。
0079nobodyさん
03/02/11 18:28ID:???どのバージョンにもつかえるわけないけど、
use constant {
HOGE => ’../’,
HUGA => 100,
};
とか書くのが美しくて速いと思う(インライン化されるから)
0080nobodyたん
03/02/11 18:37ID:???0081nobodyさん
03/02/11 18:43ID:???use constant は便利なんだけど、文字列の中では展開されないよね。
これさえなければもっと積極的に使いたいのだけど。
0082nobodyさん
03/02/11 19:01ID:???open(OUT, "+<aaa.txt");
flock(OUT, 2);
print OUT "略";
close(OUT);
0083nobodyさん
03/02/11 19:39ID:???0085nobodyさん
03/02/11 21:39ID:???use constant PI => 4 * atan2 (1, 1);
print "The value of PI is @{[ PI ]}.\n";
0086nobodyさん
03/02/11 21:53ID:???おお、そんな使い方ができたなんて初めて知ったYO!
今までconstantはコンパイル時に展開されるもんだと思い込んでた。
こんどから積極的に使ってみます。マリガトー
0087nobodyたん
03/02/12 00:00ID:???use constant NOBODY => 774;
は
sub NOBODY { 774 }
ってするのと同じ。(constant.pm 参照)
0088nobodyさん
03/02/12 00:34ID:9lI7mE1F$a = "aaaaaabababanfjfggkrwaafrwnlwa";
例えば$aの中に「a」と言う文字が何回現れるか数えられる関数はありますか?
0090nobodyさん
03/02/12 00:48ID:???0094nobodyさん
03/02/12 06:41ID:???print "The value of PI is @{[ PI ]}.\n";はconstant.pmの
中に書いてあるのをコピペしただけ。まあ、ドキュメントを
読みましょ!って事ッス。何故そうなるか?はperlrefを
見ましょ。これも、constant.pmの中に書いてある(藁
>>92 はその応用形ってことっしょ。
0095nobodyさん
03/02/12 14:43ID:???0096nobodyさん
03/02/12 14:46ID:???0097nobodyさん
03/02/12 18:49ID:60fo1D0F@{[($a,$b,$c)]}[0..2] = @{[(0,3,0)]}[0..2] だと無理なのはなぜですか?
↓みたいな感じです。
DB<10> ($a,$b,$c) = (0,2,0)
DB<11> print "($a,$b,$c)"
(0,2,0)
DB<12> @{[($a,$b,$c)]}[0..2] = @{[(0,3,0)]}[0..2]
DB<13> print "($a,$b,$c)"
(0,2,0)
DB<14> print @{[(0,3,0)]}[0..2]
030
DB<15> print @{[($a,$b,$c)]}[0..2]
020
0098nobodyさん
03/02/12 20:29ID:???print (@{[($a,$b,$c)]}[0..2] = @{[7,8,9]}[0..2]),"\n";
[]演算子は引数のコピーによる配列リファレンスを作るからだよ。
つまり
@{[ $a, $b, $c ]} = (...)
は
my @tmp = ($a, $b, $c);
@tmp = (...);
と同じことになる。
010092
03/02/12 21:34ID:???ありがとん。perlrefに
>Here's a trick for interpolating a subroutine call into a string:
> print "My sub returned @{[mysub(1,2,3)]} that time.\n";
を見つけました。
constant.pmのコードからすると、>>87さんの言うと通りなので、
配列にするのが礼儀正しい方法みたいですね。
0101nobodyさん
03/02/13 02:39ID:???普通に、
print "My sub returned" . mysub(1,2,3) . "that time.\n";
の方がいいと思う
0102nobodyさん
03/02/13 16:37ID:/En01Oe5$moji2 = '110';
〜〜〜〜〜〜〜←ここの部分
$moji1 - $moji2 == 1
という風に文字列を数字に変換するにはどうしたらよいでしょうか?
0103nobodyさん
03/02/13 16:47ID:???carrysun という携帯対応の掲示板(現在公開されていません)を使っています。
最近気づいたのですが、analogの結果を見ると 403エラーがたくさんでています。
access_logを見てみると、該当ディレクトリを GETしていてエラーがでています。
"GET /cgi-bin/csun/ HTTP/1.1" 403 xxx
このようなエラーです。
これがちょっとうざったいので、直したいのですが、csun.cgiを見てもどこで
そんなリクエストを出しているのかが掴めませんでした。
画像とかの指定かなと思ったんですが、何か調べる良い方法はありますでしょうか?
#ちなみにlocalのlinuxでテストできます。
何か簡単なアドバイスでも良いのでよろしくお願いします。
0104nobodyさん
03/02/13 16:52ID:???意味不明
>>403
http://www.google.co.jp/search?q=403+%83G%83%89%81%5B&ie=Shift_JIS&hl=ja&lr=
スレ違い。
0108nobodyさん
03/02/13 16:58ID:???ブラウザが勝手にルートたどったりするんじゃねーかな
関係ないかも知れんが、IEとかだとお気に入りアイコン探しまくってうざい
0110104
03/02/13 17:03ID:???0111nobodyさん
03/02/13 17:13ID:???何もしなくてよい。
$moji1 = '111';
$moji2 = '110';
printf("\$moji1 - \$moji2 = %d\n", $moji1 - $moji2);
0112nobodyさん
03/02/13 17:14ID:???設定ファイル csun2.cgi を見るとサーバのディレクトリの設定は、
$server=qq|http://$ENV{'SERVER_NAME'}$ENV{'SCRIPT_NAME'}|;
これしかありません。
なので、ディレクトリを見に行くことはないはずなんですが...
画像ファイルの設定も
$pc_title_img='';
になってますが、ちゃんと処理してあって、空の場合はテキストのタイトルを
表示するようになっています。
あとは、どんな理由があるのか???
0115nobodyさん
03/02/13 17:25ID:???現在配布していませんが、
http://applejam.cool.ne.jp/
です。
0117nobodyさん
03/02/13 17:37ID:???# 戻り先URLを設定 --------------------------------------------------------------------- #
$pc_home ='../pc/index.html';# パソコン 用
$ez_home ='../ezweb/index.hdml';# EZweb 用
$i_home ='../imode/index.html';# i-Mode 用
$j_home ='../jsky/index.html';# J-SKY 用
$astel_home='../imode/index.html';# ドットi 用
はどうなってる。
0118nobodyさん
03/02/13 17:39ID:???サイトアクセス数(200 OK)の1/4が403エラー
access_logを見ると前後に必ずそのスクリプトの名前が出てくる。
/cgi-bin/csun/csun.cgi 200
/cgi-bin/csun/ 403
/cgi-bin/csun/csun.cgi 200
のような感じです。
同じ掲示板を4つ位使ってますが、どの掲示板でもエラーが出ます。
スクリプトの問題以外だとブラウザから直接ディレクトリを指定する
というのが考えられますが、それ以外に403エラーがでる理由はありますか?
0120nobodyさん
03/02/13 17:43ID:???0121nobodyさん
03/02/13 17:43ID:???0122nobodyさん
03/02/13 17:45ID:???前に調べたのですが、異常はありませんでした。
>>120
これが一番いいかも知れません。ちょっと試してみます。
>>121
すみません。ちょっと意味がわかりません。
0123104
03/02/13 17:46ID:???なるほど。
そういった根拠があれば何も言うことはないっす。
例えばどっかからリンクミスなURLが貼られてしまったとかだと、
バンバンリクエストが来る可能性があるもんで。
0124nobodyさん
03/02/13 17:47ID:???ところで、あんたはどうしたいんだ?
403でなくなればそれでいいのか? /cgi-bin/csunへのアクセスがなくなってほしいわけじゃないのか?
0125nobodyさん
03/02/13 17:50ID:???0126nobodyさん
03/02/13 17:53ID:???すみません、説明不足で。はじめに言うべきだったのかもしれません。
csun.cgiは、掲示板として正常に動いています。
ただ、analogのレポートを見たときに、あまりに403エラーが多いので、
(先ほど書いたようにサイトのアクセスの1/4)なくしたいだけです。
多分、csun.cgiにアクセスするたびにほぼ毎回403エラーが出ていると
思います。
実害が出ているというより、ただうざったいから、というのと色々スクリプト
を見てもわからないので、知的好奇心から原因を知りたくなったから、という
理由からです。
0128nobodyさん
03/02/13 18:06ID:???0129nobodyさん
03/02/13 18:09ID:???どの行がこのGETのリクエストを出しているのかを調べる方法があるのかと思ったの
ですがないですかね?
0130nobodyさん
03/02/13 18:12ID:???アクセスログのリファラでも調べろ。
以上終了。
0131
03/02/14 12:58ID:mtrOCq/2これか?
0132nobodyさん
03/02/14 13:32ID:???access_log の リファラをonにして調べていたところやっとわかりました。
csun2.cgi にて $background ='.'; となっており、
csun.cgi にて
<BODY BGCOLOR="$bgcolor" BACKGROUND="$background" TEXT="$text" LINK="$link
" VLINK="$vlink" ALINK="$alink">
となっていたためでした。
こんなことで本当に申し訳ありませんでした。
色々ありがとうございました。
0133nobodyさん
03/02/14 15:52ID:???0134nobodyさん
03/02/14 17:09ID:aS0shCzvパス付きでも、実行マシンから既にアクセスしていたり(パスワードを入力済み)
実行マシンと同じID/PASSだったりすると特別めんどくさいことはないんでsuga
open FILE,"\\IPアドレスとかマシン名\xxxxx";
で開けますよね。
ただ、上記の条件をみたなさな、単純にパスワードが付いてるマシンの共有フォルダに
アクセスする場合、スクリプト側では、ID/PASSはもちろんしってるんですが
どうすれば開けるんでしょうか?
0136134
03/02/14 19:54ID:aS0shCzvそのヒントから
Win32::NetResource
にたどりつきました。。。ありがとうございます。
0137nobodyさん
03/02/14 21:52ID:nq8/avY5正しいパスワードが入力されたら別のURLにジャンプしたいのですが
どうすればよいのでしょうか?
指定のURLにジャンプできるコマンドとかありますか?
0140nobodyさん
03/02/14 22:31ID:???0141nobodyさん
03/02/14 22:37ID:???0142137
03/02/14 23:33ID:nq8/avY5ですが、Perlのなかに具体的にどのようにlocationを組みこむかが分からないです。
ちなみに、下のHTMLから入力されたものをsample.cgiでチェックして、正しい名前とパスワード
だったら別のページ(仮にwww.sample.ne.jp/ok.htm)にジャンプしたいのです。
<HTML>
<HEAD><TITLE>サンプル</TITLE></HEAD>
<FORM ACTION='http://www.sample.ne.jp/test.cgi' METHOD='POST'>
名前<INPUT TYPE='text' NAME='NameBox' VALUE='' SIZE='50' MAXLENGTH='50'><BR>
パスワード<INPUT TYPE='text' NAME='PassWordBox' VALUE='' SIZE='50' MAXLENGTH='50'><BR>
<INPUT TYPE='submit' NAME='write' VALUE='送信'>
<INPUT TYPE='reset' NAME='cls' VALUE='消去'>
</FORM>
</BODY>
</HTML>
0145nobodyさん
03/02/14 23:53ID:???他スレの皆さんにも迷惑になるので。
HTTP : header location
HTML : meta refresh
JavaScript : location.href
こんなもんでいい?
0146nobodyさん
03/02/14 23:54ID:???print "Location: http://example.com/hoge.html\n";
print "\n";
これをContent-Typeを出してる所と入れ替えてみよう。
それから、これがスレ違いであることを理解しよう。
>>143
HTTPっていうより、CGIの仕様なんだよぅ。
勝手にヘッダーを作り直してくれるという。。
nphスクリプト用:
print "HTTP/1.0 302 Found\n";
print "Location: http://example.com/\n";
print "\n";
0147nobodyさん
03/02/14 23:59ID:???0148137
03/02/15 00:00ID:6NeqGII/で解決できました。
0150nobodyさん
03/02/15 00:54ID:???いまだにPerlと無関係な質問が絶えないんだよな。
まさに厨が厨を呼ぶ厨スパイラル状態。何とかならんのか。
せめて回答する側は、スレ違い質問への無視&誘導を徹底してほしいよ。
0151nobodyさん
03/02/15 01:03ID:???1.perlのコードに関する話題
2.perlのインストールに関する話題
3.モジュール、ライブラリの話題
1はOKとして、2、3は駄目?
0152nobodyさん
03/02/15 01:08ID:gnW2vWOc現在、へぼいゲームを作成していまして、その際にユーザのパラメータ(例えばHP,MP)を、
すでにあるuser[ユーザのID].datというファイルからget_userdata()で取り出したいと考えています。
その際に引数として($ユーザのID,$ユーザのパス)を渡して、それに応じて各ユーザのdatファイルから
値を取り出そうと考えているのですが、この「$ユーザのID,$ユーザのパス」をクッキーとして保存して
おいて、毎回get_userdata()を使用するときにクッキー情報を読むというのは、ゲームという観点からは
どうなのでしょうか?(セキュリティ面、改造など)
ユーザ登録でidとpassを取得しても、次のCGIに行くとその情報が消えてしまうので
他に方法があればご教授お願いします。
0154nobodyさん
03/02/15 01:44ID:???0155nobodyさん
03/02/15 01:49ID:???設計レベルの話はこっちへ。
http://pc2.2ch.net/test/read.cgi/php/1041530204/
>>154
区別の付く人間が積極的に誘導 or 徹底的に無視すればいい。
0159nobodyさん
03/02/15 12:51ID:FZQxbA/5local($flags)=0;# NGキーワード追加
$s_mes = $in{'comment'};
foreach (split(/\s+/, $ng_word)) {
s/\*/\.\*/g;
if ($s_mes =~ /$_/i) { $flags=1; last;}
}
if ($flags) { &error("投稿エラーです。"); }# ここまで
なにか間違ってる記述がありますか?
0160エラーが出ます。
03/02/15 13:08ID:???0161nobodyさん
03/02/15 15:21ID:???文法的にはその記述は通る。みっともないけれど(w
あと、 >>160 の意味が分かるか?
ようするに何のエラーなんだよ。
で、「500 Internal Server Error と出ます」って応えたらそれ以降は放置だからな。
0162nobodyさん
03/02/15 16:59ID:FZQxbA/5どのようにエラー出ているか調べるにはどうすればいいのでしょうか。
Web上で実行させると500 ......と出る。これじゃ手かがりにはならないと言うのは分かるんですよ。
で、どのようにやれば詳細なエラーが出るのか分かれば・・・・・
0163nobodyさん
03/02/15 17:20ID:???http://pc2.2ch.net/test/read.cgi/php/1041530204/
0164nobodyさん
03/02/15 17:36ID:FZQxbA/5if ($s_mes =~ /$_/i)
で、 =~ で右の方で変数を使ったらだめっぽいんですが、そうなんでしょうか?
試しに =~ /NGキー/ と文字そのままやったら行けるんですが、
=~ /$ng_word/ だと駄目と言う事はわかりました。
変数を使うにはどうすればいいのでしょうか?
0165nobodyさん
03/02/15 18:21ID:???http://www.harukaze.net/~mishima/perl/cgi-debug-env/deb-tech.html
>>164
$s_mes =~ /$ng_word/i が駄目なのではない。
$ng_word の中身が問題だ。
joyful.cgi とやらがどんなスクリプトか知らんが、
ここに書いてある事が役に立つかも知れない。
http://homepage1.nifty.com/nomenclator/perl/shiftjis.htm
0166nobodyさん
03/02/15 18:38ID:nMMOQiZ6タグが使える
改行はbrをしなくても自動で認識
携帯対応のほうはすべて無効
同じログを取得
このような掲示板はどのようにすれば作れるのでしょうか?
考え方だけでも良いのでアドバイスお願いします。
0167nobodyさん
03/02/15 18:43ID:???タグをそのままに
改行コードを<BR>に置換
携帯対応の何を無効にしたいのか書かないとわからない
何と同じログを取得したいのか書かないとわからない
0168167
03/02/15 18:44ID:???0169nobodyさん
03/02/15 20:42ID:FZQxbA/5ご丁寧にありがとうございます。
ですが、解決しました・・・
index($in{'comment'},$ng_word).....と書く事で動きました。
0170nobodyさん
03/02/15 21:03ID:???1行につき50個の数値が,で区切られてい記録されているファイルが複数あります。
中身を読み込んで100個の数値(array1,array2それぞれ50要素)配列を返すsub read
を利用して数値を読み込みたいのですが、返ってくる数値のスマートな受け取り表記がわかりません。
どなたかご教授下さらないでしょうか。
($data[0],$data[1]....$data[99]) = &read("filename");
↑現状ではこのように書いています。
sub read{
open (IN,"<$_");
my @array1 = split(/,/,<IN>);
my @array2 = split(/,/,<IN>);
close (IN);
return (@array1,@array2)
}
なお、数値はそれぞれ10回程度計算で変更されたあとファイル再び書き込まれます。
0171nobodyさん
03/02/15 21:21ID:???> &read("filename");
ってエラーにはならないのか。
my @data = &read_file('filename');
sub read_file{
open (IN,'<$_');
my @array = split(/,/,<IN>);
close(IN);
return (@array,@array);
}
・・・参照で返した方がいいかなぁ。
それ以前に日本語が判らんなぁ(w
0173172
03/02/15 21:28ID:???170です。
0174nobodyさん
03/02/15 22:31ID:???http://pc2.2ch.net/php/SETTING.TXT
長文になるときはこちらを閲覧してみてください。
制限は2048文字になっていますね ニヤリ
0175nobodyさん
03/02/15 22:34ID:???0176nobodyさん
03/02/15 22:36ID:???それも違う。2048byteだ。
0177nobodyさん
03/02/16 01:27ID:IEb+jUgzhtmlからフォームの値をpostで送信して表示させたいのですが、
ローカル(ActivePerl、アパッチ使用)でやると対象CGIがテキストで表示され、
実際にサーバーにUPするとInternal Server Errorになります。
対象ソースの該当部分は以下のとおりです。
#!c:/perl/bin/perl
require'./cgi-lib.pl';
&ReadParse(*input_data);
$a = $input_data{'a'};
$b = $input_data{'b'};
$c = $input_data{'c'};
スレ違いでしたらすいません。
0178nobodyさん
03/02/16 01:50ID:???ローカル環境のActivePerlは使ったことないんで分からんが、
リモートサーバで、そのperlのパスではまず動かないね。
permissionも確認しれ。
あとprint "Content-type: text/html?n?n";などのヘッダの記述がない。
後は他でやれ。
0179nobodyさん
03/02/16 01:52ID:???print "Content-type: text/html\n\n";
require './cgi-lib.pl';
&ReadParse(*input_data);
0180nobodyさん
03/02/16 02:04ID:???外のサーバで動かしてたCGIをローカルにもってきました。
ローカル環境はWin2K+Apache2+ActivePeal5.8です。
Peal自体は実行できているんですが、(カウンターや掲示版の表示)
書き込みをしようとすると、反応しなくなってしまいます。
どうもPOSTのアクションをさせようとするとこうなってしまう
様なのですが、どうにも分からなくて、、、。
考えられる原因などお分かりの方いらっしゃったら
御指導ください。
タスクマネージャーでプロセスの確認をするとperlの占有率が98%
とかになってしまってるし、killしようとすると拒否されてしまいます。
0181177
03/02/16 02:06ID:IEb+jUgzさっきのは一部なので当然下のほうにはヘッダ記述等あります。
もちろんサーバーにあげる際はperlのパスは変えてます。
以下、さっきの残りです。
$c = $input_data{'c'};(ここまでは177の分)
print "Content-type: text/html\n\n";
print "<html>\n";
print "<body>\n";
print "$a&$b&$c<br>\n";
print "</body>\n";
print "</html>\n";
0183nobodyさん
03/02/16 02:23ID:???http://pc2.2ch.net/test/read.cgi/php/1014096840/309/
簡単な掲示板ソースでも見れ
0184nobodyさん
03/02/16 02:31ID:0jPHodHRどうすればよいでつか?
0185nobodyさん
03/02/16 02:42ID:???取りあえず
sudo kill -9
winで使えない関数とかなかったけ?flockとか...
perl5.8で動くように書かれてるの?
自分で書いたのじゃなければ、作者にフィードバックすれ。
んで、スレ違い。
0186
03/02/16 02:43ID:ah8+t8Vmcgi自体ちゃんと動いてるの?
#! /usr/bin/perl
print "Content-type: text/html\n\n";
print "ok \n";
は表示される?
これは
0188nobodyさん
03/02/16 02:46ID:???0189180
03/02/16 02:59ID:???>Peal
逝ってきます。
>>185
たしかに自分でかいたものではないので(書けません、、、泣)
ひとます、perlのヴァージョンの線で考えてみる事にします。
>>187
他のflock使っているcgiが動いているので、
ご指摘のとおりやはり違う問題のようです。
flockのような関数が他にあるといった事はないでしょうか?
0190nobodyさん
03/02/16 03:27ID:???ファイルロックで使われてる。
0191180
03/02/16 03:30ID:???先程質問させてもらったループのような症状にはならないものの
やはり書き込みが出来なかったので、もしかしたら
ApacheやWin2Kの設定の可能性もあると思うので、
そこらへんの板にも逝ってきます。
ありがとうございました。
0193177
03/02/16 12:34ID:e43KuLNCCGI自体は動いてます。
書いていただいたソースも問題なく表示されました。
0194nobodyさん
03/02/16 14:46ID:???@fname,@scorea,@average@scorej,@scoremにデータを入れた後、averageで
降順にソートしようと考えています。
下のようなソースで、エラーは出ないのですが、ソートしても順番が変わりません。
@fnameは文字列、それ以外は整数です。
Webなどを参考に独学でやっているので、基本的なはずかしいミスなのかも
しれないのですが、よろしくお願いします。forとかもうまく使えないし・・・
@results = (
[$fname[0],$scorea[0],$average[0],$scorej[0],$scorem[0]],
[$fname[1],$scorea[1],$average[1],$scorej[1],$scorem[1]],
[$fname[2],$scorea[2],$average[2],$scorej[2],$scorem[2]],
[$fname[3],$scorea[3],$average[3],$scorej[3],$scorem[3]]
)
@sortresults = map {$_->[0]}
sort {$b->[2] <=> $a->[2]}
map {[$_, split /,/]} @results;
その他、
@sortresults = sort { (split(/\,/,$b))[2] <=> (split(/\,/,$a))[2] } @results;
やreverse sortも試したのですが、結果は同じ(@resultsのまま)でした。
0195nobodyさん
03/02/16 15:43ID:???0196nobodyさん
03/02/16 15:49ID:???ってことね
0197nobodyさん
03/02/16 16:03ID:???@sortresults = sort { $a->[2] <=> $b->[2] } @results;
0198194
03/02/16 16:23ID:???できました!ありがとうございます。
昨日1日悩み続けて無駄にしてしまったのに、こんなに簡単なこととは・・・
あとは複数キーのソートにするだけなので大丈夫そうです!
本当に助かりました。
0199nobodyさん
03/02/16 18:40ID:???my $pid = fork;
die $@ unless defined $pid;
if($pid){
print "Content-type: text/html\n\n";
print "$pid:処理中です<br>";
local $eop = wait;
print "$eop:処理が終わりました<br>";
exit(0);
}
close STDOUT;
while(1){
last if $tmp > 10;
sleep(1);
$tmp++;
}
exit(0);
上記は、forkのテストコードで
ブラウザへの吐き出しを先に行い
後ろで重い処理というものを狙っているのですが
子供の処理が終わるまで、一切の吐き出しが行われません…
コード自体はこれで合っていますでしょうか?
環境はWin32上のApache1.3.27と
ActivePerl5.6.1build633です。
0200nobodyさん
03/02/16 19:24ID:???0202nobodyさん
03/02/16 20:05ID:6e2uXHNP0203199
03/02/16 21:09ID:???レスありがとうございます。
コマンドラインから実行してみるとうまくいくのですが、
ブラウザだと10秒後にやはりprintが実行されてしまいます。
close STDOUTをコメントアウトして実行してみたのですが
コマンドライン(成功)、ブラウザ(失敗)で
コメントアウト前と変わらずでした。
ちなみにperlへのパスは下記でしっかり通っております。
上記のソースからは抜いておきました。
#!c:\perl\bin\perl.exe
コードに問題がない場合、mod_perlやサーバの
バッファ関係の扱いの問題というのが想像できるのですが
この可能性はありますでしょうか?
0204200
03/02/16 22:30ID:???おっしゃる通り、バッファ関係と思われますが、サーバではなくクライアントサイドのブラウザの問題でしょう。
蛇足でした。。
0205200
03/02/16 22:45ID:???0207201
03/02/16 23:27ID:???いろいろ実験しましたが、windowsのApacheではなぜかバッファされるようです。
SendBufferSizeディレクティブもうまくいきませんでした。
LAN上のFreeBSD 4.6+Apache1.3.27で試してみた結果、
直接出力されました。Unixに移行する事で回避できそうです。
0209nobodyさん
03/02/17 01:06ID:???0210199
03/02/17 01:28ID:???なにやら手数をおかけしてしまったようで…
やっぱり環境上の問題なのですね。
生憎UNIXへ移行できるだけ環境にないのであきらめます。
でもコーディング自体、簡単なものですが
勉強になったので結果オーライです。
>>209
ためしにtelnetからGETしてみたら
変わらず同じ結果でした。
0211201
03/02/17 03:26ID:???>Windows 用の Apache バージョン 1.3 系では同期的な呼び出しが実装されています。
>このことは、バッファされていない結果が直ちにブラウザで見られないという
>CGI 制作者にとっては大きな問題の原因になります。
これっぽい。
0212nobodyさん
03/02/17 05:09ID:SDV2BVg0どうやって拡張子を変更すれば良いのでしょうか?
ただリネームするだけでは無理だったのでお願いします。
0213nobodyさん
03/02/17 05:35ID:???0214nobodyさん
03/02/17 05:36ID:SDV2BVg0perlで作成したexeを改造したいのですが…。
0215nobodyさん
03/02/17 05:58ID:???perlのプログラムをWindowsの実行ファイルにする方法ならある。
シェアウェアだがperl2exeってのがその1つ。検索してみ。
0216nobodyさん
03/02/17 06:01ID:???Perl2Exe
0217nobodyさん
03/02/17 06:04ID:SDV2BVg0ありがとうございました。
perlで作成されたexeの改造はどのようにして行うのでしょうか?
0219nobodyさん
03/02/17 06:10ID:???あとリネームして拡張子を変えても、周り(Windowsとか)の挙動が変わるだけで
中身は一緒でしょ。
0220nobodyさん
03/02/17 06:15ID:SDV2BVg0初心者なのでよくわからないです。
.plは.txtにリネームしたら改造できますよね?
perlで作成されたexeをplに戻してtxtで改造、再度txtからpl、exeとするのはできないのでしょうか?
0221nobodyさん
03/02/17 06:54ID:SDV2BVg0exeは改造できないみたいですね。
ありがとうございました。
0222nobodyさん
03/02/17 07:49ID:???もう少し勉強してから来て下さい
0223nobodyさん
03/02/17 11:56ID:80mgjnJ40224nobodyさん
03/02/17 13:32ID:4sj7P/C2exeに書き出す前のPerlスクリプトを改造すればいいじゃない。
0225nobodyさん
03/02/17 14:38ID:???0226nobodyさん
03/02/17 16:00ID:???たくさんのCGIで共通処理があったので、
init.pl っていうライブラリにその処理を格納しました。
そうすると、 times で得られる実行にかかる時間が
少し大きくなってしまう気がするんですが
これは気のせいですか?
require すると、時間がかかるのは仕様なんでしょうか
よろしくお願いします。
0227nobodyさん
03/02/17 16:18ID:???共通処理はサブルーチンにして、メインパッケージにのせたらどうでしょうか。
0230nobodyさん
03/02/17 18:08ID:???食い逃げの多い世の中、鏡だね
0231nobodyさん
03/02/17 18:18ID:???配布はされてるけど動かないなぁ。
というか、コードを読んだ限りじゃまだまだAlphaの段階で、
真面目にポータビリティを考える段階じゃないらしい。
VCでのコンパイルコードにperl57.libとかハードコーディングしてあるしね。
0233nobodyさん
03/02/17 21:03ID:Fb0RpjXG添付ファイル付きメールをフォームから送りたいと思い、
まず、formのENCTYPEを、'multipart/form-data'にしてみました。
こんな感じ
<FORM ENCTYPE='multipart/form-data' action='/cgi-bin/tenpumail.cgi' method='POST'>
すると、その後のINPUTで指定しているパラメータがわたってこないようなのです。
<inpit type=text name="onamae">
というようなパラメータが、いっこも渡って来ないのです。
ENCTYPE='multipart/form-data' をはずすとちゃんと渡ってきますが、
それではファイル添付ができないし…。
こう言ったことって良くあることなのでしょうか?
また、解決方法などありましたら、教えて頂けませんでしょうか。
0234203
03/02/17 21:10ID:Fb0RpjXG<inpit type=text name="onamae">
は
<inpit type="text" name="onamae">
の誤りです。すみません。
0236nobodyさん
03/02/17 21:20ID:???http://www.google.co.jp/search?hl=ja&inlang=ja&ie=Shift_JIS&c2coff=1&q=multipart%2Fform-data&btnG=Google+%8C%9F%8D%F5&lr=lang_ja
まず検索しようね...
上から6コ目
0237233
03/02/17 21:24ID:???あ、ありがとうございました!
教えて頂いたところは見つけていたのですが、
回答にあるdecode.plを探さずに「だめか…」とへこんでいました。
探してみたらありましたので、もうちょっと調査してみます。
0239nobodyさん
03/02/17 21:44ID:???応用力無くても別にかまわないかと。
0240nobodyさん
03/02/17 21:51ID:4gk/zjjHどうも最新版のモジュールリポジトリに DB_File がないようなのですが、何か理由でもあるのでしょうか。
古い方のActivePerlのリポジトリにはあるようです。
0241236
03/02/17 21:53ID:???0242nobodyさん
03/02/17 22:33ID:1e74kzGJ0243nobodyさん
03/02/17 22:43ID:???0245nobodyさん
03/02/17 22:47ID:???http://pc2.2ch.net/test/read.cgi/php/1014357485/l50
0248nobodyさん
03/02/17 23:37ID:EIQogyxLmp3ファイルをopenしてprintしたら
バイナリがそのまんま文字化けしてブラウザに表示されてしまいました。
一応"Content-Type: audio/mpeg"は送っているのですが
やはり拡張子がmp3でないファイルは音声として扱ってもらえないのでしょうか?
やりたいのは、cgi要求に対してmp3のバイナリを返して
それをブラウザがmp3プレイヤーに渡して音楽を鳴らす。
というのを考えているのですが・・・・
0249nobodyさん
03/02/18 00:03ID:EDQzMDCwAPACHEのホームディレクトリにてCGIスクリプト置いたのですが、
属性を、711にしています
たとえばWWWダウンローダソフトで根こそぎもってかれると、このCGIも
もってかれるのでしょうか?
(CGIの中身はDBIにてPASSを入れちゃっていて思いました)
0251249
03/02/18 00:14ID:EDQzMDCw基礎的なものが無知ですいませんでした。。
(;´Д`)もうちょっと勉強して自分で調べてみまつ
0252nobodyさん
03/02/18 00:51ID:???audio/mp3
ってのはどぉよ?
しれでもダメなら、ちゃんとMP3ファイルを吐き出しているサイトへtelnetで接続してみて、
レスポンスのエンティティヘッダ「Content-type:」を調べてみる。
それでもダメなら、ブラウザが対応していないだけ。ファイルヘルパーの対応を設定してみる。
0253nobodyさん
03/02/18 02:31ID:GFaap2mWんー、某所でtelnetで試してみたら
apacheがaudio/mpegって吐いたんで
(もちろんCGIじゃなくてMP3直指定ですが)
それを真似してみたんですけどね。
ブラウザはIE6SP1です。
audio/mp3はまた試してみます。
0255nobodyさん
03/02/18 05:04ID:Dcv1K+PRif ($count =~ /\n$/) { chop($count); }
$count++;
上のカウントアップ処理は1カウントずつアップしますよね?
これを2カウントずつアップするようにしたいのですがどう書き換えれば
いいでしょうか?
0257nobodyさん
03/02/18 07:09ID:MmRlkG1z本当に凄い奴だと思った。
http://homepage3.nifty.com/digikei/ten.html
0258nobodyさん
03/02/18 07:22ID:Dcv1K+PR天才!!!
0261マリモーマ ◆r6PDGT6Xd2
03/02/18 08:06ID:2FacSekMエロサイト
0262nobodyさん
03/02/18 08:36ID:???++$count;
++$count;
0263nobodyさん
03/02/18 15:05ID:???0264nobodyさん
03/02/19 00:14ID:???変数名が重複しない場合でも、サブルーチン内ではmy宣言したほうが
スクリプトの実行速度は速くなるのでしょうか?
換言すると、(1)サブルーチンにグローバル変数を渡し、受け取った変数はmy宣言し、
処理したのちにreturnで返すのと、
(2)サブルーチン内でもグローバル変数のまま扱って処理するのとでは、
どちらが速いのか、ということです。
0265nobodyさん
03/02/19 00:15ID:P468uHQ80266nobodyさん
03/02/19 00:28ID:5breTLee下記程度のコードがInternal Server Errorになって動きません。
ローカルの環境設定の問題かと思って、パスを変えてサーバーにあげて動かそうとしましたがやはりエラーになります。
何故でしょうか?
#!c:/perl/bin/perl
require 'cgi-lib.pl';
&ReadParse(*input_data);
print "Content-type: text/html\n\n";
print "<html>\n";
print "<body>\n";
print "value1 = $input_data{'value1'}<br>\n";
print "value2 = $input_data{'value2'}<br>\n";
print "</body>\n";
print "</html>\n";
exit;
0267nobodyさん
03/02/19 00:42ID:???変数自体にかかるコストは、シンボルテーブルに入らない分、myの方が速い。
でも、コピーにはコストがかかる。だから、遅くなる、だと思う。
遅くなる以上にメリットがあると思うんだけど・・・
それに、巨大なものを扱うなら、上手にリファレンスを使ったら、
コピーしなくてもよくなって、速くなるかも。。
0277nobodyさん
03/02/19 01:08ID:???PERLがローカルに入っているなら、
それ使った時に出たもっと具体的な
エラーメッセージは?
0281nobodyさん
03/02/19 01:26ID:???0282nobodyさん
03/02/19 01:58ID:???use Benchmark qw(cmpthese);
$b = '';
cmpthese(-5, {A=>sub{&a(1); sub a{my $a = shift;}}, B=>sub{&b(1); sub b{local $b = shift;}}});
--
ここまでこだわる前にアルゴリズムを見直す方がいいに一票。
0284264
03/02/19 02:47ID:???レスありがとうございます。
>>282を実行したところ、Aのほうが早かったです。
>ここまでこだわる前にアルゴリズムを見直す方がいいに一票。
単なる素朴な疑問だったもので、おっしゃるとおりです。
効率的なアルゴリズムのなんたるかを勉強してきます。
0285nobodyさん
03/02/19 03:20ID:IJ5Nv9d6「ファイルを開くアプリケーションを選んでください」
になってしまいます、どのアプリケーションで開けば良いのでしょうか?
0287nobodyさん
03/02/19 03:44ID:IJ5Nv9d6編集するんじゃなくて、カウンタとして表示させたいのですが。
cgi設置法の基礎なんて、PERL以前の話。
スレ違いだよ。
0289nobodyさん
03/02/19 04:04ID:???http://tohoho.wakusei.ne.jp/wwwcgi6.htm
http://homepage1.nifty.com/glass/tom_neko/web/web_cgi_osx.html
(・∀・)カエレ!!!!
0291マリモーマ ◆r6PDGT6Xd2
03/02/19 06:49ID:tT+FI6u3これだと思うだけど
#!c:/perl/bin/perl →#!/usr/bin/perl
0292nobodyさん
03/02/19 06:55ID:V0z+N0Slhttp://homepage3.nifty.com/digikei/ten.html
0293nobodyさん
03/02/19 15:12ID:CC31r6wC0295nobodyさん
03/02/19 16:14ID:???0298nobodyさん
03/02/19 18:47ID:???$times = time;
($sec,$min,$hour,$mday,$mon) = localtime($times);
$mon++;
if ($hour < 10) { $hour = "0$hour";}
if ($min < 10) { $min = "0$min"; }
if ($sec < 10) { $sec = "0$sec"; }
英国の鯖に置いているのですが、時差を日本標準時間に修正するには
どのように設定すれば良いでしょうか。
0301 ◆nBdXIOeCFk
03/02/19 22:02ID:qxP6cynE0302nobodyさん
03/02/19 22:05ID:???もしかしたらそのコードは、悪評高きCGIレ○キューのもののような気が..
配布する方も無責任だよな。少し勉強すればわかるはずなんだから。
0を前に付ける正しい方法は、sprintfで整形する。だ。
0303nobodyさん
03/02/19 22:29ID:???0304nobodyさん
03/02/19 23:25ID:a2cu6yGF例えば、
read.cgi?key=96477&st=40&keywd=%A5%C6%A5%B9%A5%C8
と言うふうになり、変換する途中、
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg
を使いますが、
この
~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/egと
全く逆の動作をする式…文字から16進へ変換する式
を教えて下さい。
お願いします。m(_ _)m
0305nobodyさん
03/02/19 23:26ID:???かくいう漏れも昔は>>298のように書いてたし。
そんなわけで
($sec,$min,$hour,$mday,$mon) = gmtime(time+9*60*60);
でどうよ?
0308nobodyさん
03/02/19 23:37ID:???いや、タイムゾーンを直そうよ。。。
0309266
03/02/19 23:48ID:r5CAiNQE>>273,279,280.281
エラーメッセージというのはデバッグで確認できるものとは違うのでしょうか?
ちなみに自分の思っているデバッグとはdosプロンプトでperl -cwでやる文法チェックのことです。
それではエラーもアラートも出ません。
フォームから起動するとプレーンテキストのままcgiファイルが表示されるだけです。
ローカルでもサーバーでも起動しないということはやはりどこか文法がおかしいのでしょうか?
ちなみにパスはローカルとサーバーとで当然変えてテストしています。
0310nobodyさん
03/02/19 23:55ID:???最初のソース見る限り、一応タイムゾーンはいじってあるみたいなんだけども。
それで変わらないんだから、変わらない理由は他にありそう。
だったら、次善の策でもいいんじゃないか?
本当にタイムゾーンが変わらないんだったら、鯖缶の怠慢かも知れんけど。
0311nobodyさん
03/02/19 23:58ID:???>>272の質問にこたえろヴォケ!
理解できない or 都合の悪い質問を無視するのは厨房のやることだ。
……あれ? 厨房だったか?
使ってるのはActiveperlだと思うけど、
完璧なチェックでは無いので過信しないように。
それより、291がいいこと言ってるぞ。
先頭行が違う=>cgiと認識していないのでそのまま吐く。
0313nobodyさん
03/02/20 00:14ID:???$ENV{'TZ'} = "Japan";
とかでもやってみるとか。
0315266
03/02/20 00:21ID:Hhj+m+Kjあるよ
0316nobodyさん
03/02/20 00:24ID:???perl -cでチェックできるのは、コンパイルエラーのみだから、
実行したときに発生するエラー(require失敗、関数が見つからない)は、
存在するかしないかは分からない。
0317nobodyさん
03/02/20 00:25ID:???0318266
03/02/20 00:32ID:Hhj+m+Kjどうもありがとうございます。
もう一度先頭行を確認してみます。
0319nobodyさん
03/02/20 01:06ID:???http://www.harukaze.net/~mishima/perl/cgi-debug-env/deb-tech.html
0320マリモーマ ◆r6PDGT6Xd2
03/02/20 08:45ID:ZbzyrSlfwindowsタスクマネージャーで perl.exeを 終了させると
いいらしい
0321nobodyさん
03/02/20 09:04ID:hpPhmqwv初心者らしい意見を有り難う。
0322304
03/02/20 09:05ID:Am46dVIUURLエンコードというのですか。
勉強になりました
0324nobodyさん
03/02/20 09:50ID:???って具合のが見易くて良いかもね。
0325nobodyさん
03/02/20 09:57ID:???一行内に特定文字列(>>\d+)がいくつあるか
数える方法というのはありますでしょうか?
現在、代案として下記のように>>\dで
splitし配列を数えているのですが
いかんせん正攻法じゃないので...
local @tmp = split(/>>\d+/,$_);
print $#tmp;
0326nobodyさん
03/02/20 10:15ID:???適当な配列にコピーしてs//gして帰ってくる数値を見ればいいんでない?
もしくはwhile(/>>\d+/g)ってやってカウンタを増やすとか…
0328nobodyさん
03/02/20 10:51ID:???> 一行内に特定文字列(>>\d+)がいくつあるか
これを読んでいなかったスマソ
my $count = 0;
foreach(split(/\n/,$_)){
print sprintf(qq{">>\\d+"の数:%0d 行目 %0d 個},++$count,(s/(>>\d+)/$1/g));
}
0330nobodyさん
03/02/20 20:18ID:ve8bV8Zf「このまま一生彼女ができないのでは…」
私は社会学を専攻している者です。社会学や周辺の学問を利用し、実践的な
恋愛理論を開発しております。机上の空論に終わらず、あくまで実践的。効果
は絶大です。この理論は私自身の苦悩から生まれました。モテないことに深く
悩んでいた私は社会学部に入り、恋愛をはじめとするコミュニケーションにつ
いて考察することを決意。開発期間およそ6年。やっと研究が実を結びました。
ルックスなんて恋愛に関係ないということを自ら証明したのです。今回はその
集大成を公開しようと、メールマガジン発行を決めました。すでに数回発行し
ておりますが、購読者にはバックナンバーが閲覧できますのでご安心を!
今ならまだ間に合います。春、出会いの季節に幸せが訪れるかどうかは、あな
たの選択次第です。絶対に後悔はさせません。「90日彼女ゲットプログラム」
もちろん購読は無料! → → http://www.h5.dion.ne.jp/~psysys/index.html
0331nobodyさん
03/02/21 01:07ID:f3aIdgTvRaQ3で正常に動いていた画像掲示板が、RaQ550にサーバーを変えてから
エラーが出て動かなくなってしまいました。
エラーログを見ると
「Premature end of script hedders : /usr/cgiwrap/cgiwrap」
となっています。
これはどういう意味のエラーなのでしょうか?いろいろ調べたのですが
わからずほとほと困っています。
perlのバージョンが上がったのが原因なのかとも思いましたが、
なにぶん初心者なのでよくわかりません。
もしよろしければ教えていただければありがたいのですが。
よろしくお願いします!
0332nobodyさん
03/02/21 01:40ID:???・1行目の Shebang が違う。
・require の該当するファイルがパスの通ったところにない。
・適切な Content-type: エンティティを吐き出していない。
・外部ファイルへのアクセス時に、該当ファイルのパーミッションが不適切であった。
・長いので省略。全部見るには >>1
0334nobodyさん
03/02/21 02:12ID:???0335nobodyさん
03/02/21 02:46ID:p5R52YmNPerlモジュールを作ってるのですが、
拡張子.pmだと、ブラウザでアクセスされると中が見えてしまいます。
で、拡張子.cgiでモジュール使おうと思ったのですが、
それだと、useで呼び出せません。
拡張子.pm以外は、useで呼び出せないのでしょうか?
また、.pmファイルの中が見えないようにするにはどうすればいいでしょうか?
0336nobodyさん
03/02/21 03:13ID:???perldoc -f useを参照。.cgiでも使えるかも。
通常は鯖側で見えないように設定かと。
.htaccessの偉い人 Part3
http://pc2.2ch.net/test/read.cgi/php/1019888234/l50
0338331
03/02/21 11:42ID:???>>333
ありがとうございました!
教えてもらったところをチェックしてみます!
前のサーバーで動いていたのに、新しいサーバーでは動かないのが
わからないんですよね・・パスはチェックしたけど
0339nobodyさん
03/02/21 18:57ID:???確かwhileを使う方法があったのですが思い出せません。
教えて頂けないでしょうか?
0340nobodyさん
03/02/21 19:01ID:???http://www.din.or.jp/~ohzaki/perl.htm#File_Random
無理。使えない。require()するしかないね。
0345nobodyさん
03/02/22 12:20ID:00dHJZueperlから以下のような内容を含むメールを送信したいのですが
&jis("この度は〜頂きありがとうございます。\n今回のオーダーは以下の内容で承りました。\nもしこの内容でよろしければこのままメールをご返信ください。〜
で送信後メールの「今回のオーダーは」
の部分が「今回のお錐桙ンは」
のように文字化けを起こします。他の箇所はよいのですが
この部分だけ文字化けを起こします。
何か対処法はあるのでしょうか?
よろしくですm(__)mペコリ
0347あすか
03/02/22 17:29ID:9iUywjuX$value =~ s/藁/笑/g;
で、藁を「笑」に変換するのはわかるんですが
これに「タグ」を利用したい場合どの様にすればよいのでしょうか?
つまり、もしも「藁」という文字列があった場合
「<b>笑</b>」と(←実際にはタグは実行されてしまっている)
したいんですが、</b>としたときの「/」が置換演算子とかぶって
しまいエラーになってしまいます・・・。(泣
0348nobodyさん
03/02/22 17:36ID:???0349nobodyさん
03/02/22 17:36ID:???世にこれをエスケープという。
/を置換演算子とやらとして解釈されないようにする。
s#藁#笑#g
世にこれを...知らん
0350マリモーマ ◆r6PDGT6Xd2
03/02/22 18:32ID:SFcrKMsp今回のオ\ーダー ではどうかな?
0351nobodyさん
03/02/22 18:36ID:9Q2QNoLVどうすれば良いのでしょうか?
↓こんな感じでやりたいんですが、、
use constant HOGE => ['hoge','hoge2','hoge3'];
print "$_\n" foreach(HOGE);
0352nobodyさん
03/02/22 19:04ID:???jcode.pl(.pm)を使う。
>>347
s/<b>笑<\/b>/藁/g; # /をエスケープ
s|<b>笑</b>|藁|g; # 区切り(デミリタ)を変える
s{<b>笑</b>}{藁}g; # 同上
>>351
use constant HOGE => ('hoge', 'hoge2', 'hoge3');
0354nobodyさん
03/02/22 21:55ID:dmtEQjtbファイルロックしてもデータが飛んでしまいます。
どうすればデータが飛ばないように出来るんでしょうか?
0355nobodyさん
03/02/22 21:55ID:???0356354
03/02/22 22:14ID:dmtEQjtbopen(OUT, "+< count.dat");
flock(OUT, 2);
truncate(OUT, 0);
seek(OUT, 0, 0);
print OUT $i++;
close(OUT);
ってやってるんですが・・・。
大量のアクセスに耐え切れませんでした
0358nobodyさん
03/02/22 22:28ID:???0360nobodyさん
03/02/22 22:31ID:???0361nobodyさん
03/02/22 22:35ID:???0363354
03/02/22 22:53ID:dmtEQjtbflock(F, 2);
$count = <F>;
$count++;
seek(F, 0, 0);
print F $count;
close(F);
} else {
&error();
}
いろいろ改良して、こんな感じなったんですけど、やっぱり1000回ぐらい何人かでやるとファイルの中身がおかしくなってしまいます
0364nobodyさん
03/02/22 22:56ID:???0365nobodyさん
03/02/22 22:59ID:???処理の結果ってのはバグの手がかりを知る大事な情報だから省略しないように。
0366354
03/02/22 23:04ID:dmtEQjtb0367nobodyさん
03/02/22 23:06ID:???0368354
03/02/22 23:07ID:dmtEQjtbそれで、実行された回数を記録したいんです。
0369nobodyさん
03/02/22 23:09ID:???例えば、先行プロセスでflockが失敗したとする。
しかしエラー処理が無いのでそのまま進む。
ここで後続プロセスがロックがかかってないのでファイルをオープンする。
データが壊れる。
0370nobodyさん
03/02/22 23:28ID:???限界があると思うけど・・・。
絶対壊れないようにするファイルロックはないです。
0371354
03/02/22 23:30ID:dmtEQjtb0372nobodyさん
03/02/22 23:31ID:???0373nobodyさん
03/02/22 23:42ID:???でたらめ抜かすな。ロックは2種類しかない。
正しいロックと駄目ロックだ。絶対に壊れないのが正しいロック、それ以外が駄目ロック。
0376354
03/02/23 00:04ID:osZUd/C4truncateって何ですか?
0377nobodyさん
03/02/23 00:08ID:???0378nobodyさん
03/02/23 00:18ID:???その方法が最良じゃないかと思いますが。
無駄な処理とかないですし。
あとはflockとseekとcloseにエラー処理加えるくらいですね。
0379378
03/02/23 00:19ID:???0381nobodyさん
03/02/23 00:29ID:???なんで354は再三にわたってエラー処理をしろというレスを
無視するんだああああr;かえ;gk’えあ;rlf’あうぇr
0383nobodyさん
03/02/23 01:09ID:???flockを使わない。
0385nobodyさん
03/02/23 01:15ID:PmGQRxss何とか回避する方法はありませんでしょうか?
0386nobodyさん
03/02/23 01:21ID:???0387nobodyさん
03/02/23 01:26ID:???Socketで&を含むURLをGETしようとしてるんですが、&amp; に展開されてしまってうまくいきません。
何とか回避する方法はありませんでしょうか?
0388nobodyさん
03/02/23 01:28ID:???0389387
03/02/23 01:30ID:???my $SOCKET = new IO::Socket::INET -> new(PeerAddr => $hostname,
PeerPort => 'http',
Proto => 'tcp',
TimeOut => '5' );
print $SOCKET "GET $url HTTP/1.1\r\n";
ってな感じです。
0390nobodyさん
03/02/23 01:39ID:???0391387
03/02/23 01:42ID:???$url = "test/read.cgi/php&1044717887";
my $SOCKET = new IO::Socket::INET -> new(PeerAddr => $hostname,
PeerPort => 'http',
Proto => 'tcp',
TimeOut => '5' );
print $SOCKET "GET $url HTTP/1.1\r\n";
ってな感じです。
(この$urlは実在しません)
0392387
03/02/23 01:46ID:???Invalid URI in request GET test/read.cgi/php&amp;1044717887 HTTP/1.1<P>
と出ます。
0393nobodyさん
03/02/23 01:50ID:???0397nobodyさん
03/02/23 01:56ID:???参考のためにOS教えて。
# truncateまでしたら、まず壊れないと思うけど。
参考のために。
use IO::File;
my $fh = IO::File->new("count.dat", O_EXLOCK|O_RDWR); # $fhがハンドル
で、ファイル開いてみてください(ただしWindows不可)。
>>387
展開されます?
>>392のサーバのエラーはHTML形式で出力されているようですが。
0400nobodyさん
03/02/23 02:14ID:???http://www.ietf.org/rfc/rfc2616.txt
5.1 Request-Line
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
5.1.2 Request-URI
Request-URI = "*" | absoluteURI | abs_path | authority
http://www.ietf.org/rfc/rfc2396.txt
3. URI Syntactic Components
abs_path = "/" path_segments
ここら辺を読んでくれたまへ。
0401nobodyさん
03/02/23 12:17ID:???ローカルではopenできるのですが、UPするとhtmlファイルがopenできません。
どうしたら良いでしょうか?
0404nobodyさん
03/02/23 12:41ID:???まともなOSなら、まともなロックぐらいできるはずだ。
エラー処理とは...
全てのシステムコールに、or die($!);ってつけて、
eval BLOCK の中で実行してみろ。例外が飛んできたら(?)
$@に入るから、それを出せばいい。
0405nobodyさん
03/02/23 18:05ID:???0406nobodyさん
03/02/23 18:07ID:???CGIだけど、なんか質問ある? Part 9
http://pc2.2ch.net/test/read.cgi/php/1041530204/
0407nobodyさん
03/02/23 19:06ID:srUBO4KW0408nobodyさん
03/02/23 19:08ID:???私のプロバがヤフーBBで今書き込めなくて困っています。
どうしたら書き込みできるようになるんでしょうか。教えてください。
0409408
03/02/23 19:09ID:???0411nobodyさん
03/02/23 19:15ID:???リストに読み込んでリバースするとなると、メモリ容量が心配でして・・・
0413nobodyさん
03/02/23 21:20ID:???スクリプトは間違ってなかったのですが
鳥の仕様でスタ(cgi-bin以下のファイルは操作できない)
婆茶とかハイマしか触ったこと無かったので分からなかった(;´Д`)
0415nobodyさん
03/02/23 21:26ID:???それじゃ最終的にファイル全部を配列に入れるわけだから同じだよ。
まあ、100KBぐらいだったら気にせずreverseでいいんでない?
0417nobodyさん
03/02/23 22:21ID:???レスありがとうございます。
平均100KBくらいなんですが、気にしなくてもいいのかもしれませんね・・
ちょっと>>416さんのところ、詳しく見させてもらいます。
ありがとうございました。
0418nobodyさん
03/02/23 22:24ID:???0419nobodyさん
03/02/23 23:49ID:???$n = 10;
for(1..$n){ 処理; }
と、しているのですがもっとベターなやり方はありますでしょうか?
0420nobodyさん
03/02/23 23:50ID:???0424nobodyさん
03/02/24 08:45ID:cCE/Sh/Gmod_perlを極めるためのおすすめ本・サイトを教えてください。
お願いします。
0426nobodyさん
03/02/24 10:50ID:???ユーザに入力して貰ったデータと照合する処理を実現したいのですが
何度試してみても結果がNGで戻ってきてしまいます
尚、照合処理は下記の様なシンプルなものです
if ($savedata[0] eq substr($chkiddata[1], 0, length($savedata[0]))) {
if (crypt($chkpassdata[1], $savedata[1]) eq $savedata[1]) {
print "password check OK...<br><br>\n";
$flg = 1;
}
}
$chkiddata[0] はユーザ入力にてIDが、$chkpassdata[1] はユーザにて入力されたパスワード文字列(平文)が格納されております
$savedata[0] は保存されているIDが、$savedata[1] は保存されている暗号化済みのパスワード文字列が格納されております
また $flg に 1 が格納されている場合は、check OK の HTML を書き出す処理をおこなっています
因みに、パスワード暗号化を行う処理は、別のPerlスクリプトで行っておりますが、これも何か関係がありますでしょうか
宜しくお願い致します
0427nobodyさん
03/02/24 12:20ID:???> if ($savedata[0] eq substr($chkiddata[1], 0, length($savedata[0]))) {
$chkiddata[1] は、なんなのさ?
if ($savedata[0] =~ /^$chkiddata[0]/) {
ぢゃなぁぃ?
0429424
03/02/24 12:48ID:???使い易く統合して機能追加したパッケージを作っいるので、
それがmod_perl環境でも動くように改良したいと思ってるんですが…。
気持ち悪いですか。うあああ。
0431426
03/02/24 14:55ID:???$chkiddata[1] の方にユーザで入力されたアカウント名が入っています、でした
今しがた print をIDチェック部分に噛ませて実行してみた所
ID 部分のチェックは問題なく認識できている様なのですが
どうしても暗号化パスワードとの比較が NG で戻ってきてしまいます...
0432nobodyさん
03/02/24 15:01ID:???0434nobodyさん
03/02/24 16:41ID:???chop $savedata[1];
0435434
03/02/24 16:42ID:???0437nobodyさん
03/02/24 18:02ID:???windows2000
Active perl 5.6.1 build 633
APACHE 1.3.27
の環境ですが
exec (又はsystem) で外部プログラムを呼び出したとき
コマンドライン上で実行した場合外部プログラムは問題なく起動するのに
ブラウザから呼び出した場合外部プログラムが起動する場合と
起動しない場合があるのは何故なんでしょう??
hoge.cgi
#!/usr/local/bin/perl
print "Content-type: text/html;charset=euc-jp\n\n"; #コマンドラインから呼び出す場合は要らない
system("program.exe");
外部プログラムはどのような物でも問題なく起動 c:>perl hoge.cgi
起動するものと起動しないものがある http://127.0.0.1/cgi-bin/hoge.cgi
0438nobodyさん
03/02/24 18:37ID:???起動する場合としない場合の違いを説明する事。
まずはpathが通っているかをチェックしる。
> 先生いいでつか?
このスレに代議士はいない。・・・はず?
0439nobodyさん
03/02/24 20:28ID:???違いは今のところパターンが把握できては居ませんが
どうやら何かしらのメッセージを標準出力に出力しないものは
起動していないような気がする。
例えば
system("dir");は
perl hoge.cgi
http://127.0.0.1/cgi-bin/hoge.cgi
共に問題なく動く
system("wmplayer");はブラウザから呼び出したときは動かない(起動しない)。
0440nobodyさん
03/02/24 21:04ID:???Apacheに理解できない出力したらいかんよ。
0441nobodyさん
03/02/24 21:26ID:38CGzi2z$year = $thisyear + int(( $thismon-1 ) /12 );
で nヶ月後は算出できるのですが…。
0443nobodyさん
03/02/25 00:21ID:???ここで落としたphpBB2.0.4をXREAに設置したのですが、
書き込み時に「"」が「?」に、「>」や「<:」が「&」になってしまいます。
phpをいじったの自体初めてで、どうすればいいのやらさっぱりです。
既知の不備等、ご存じの方がおりましたらご教授下さい。
0446nobodyさん
03/02/25 06:42ID:???0447nobodyさん
03/02/25 07:17ID:???理解できん。
0448nobodyさん
03/02/25 07:56ID:???Web制作
http://pc2.2ch.net/hp/
k
0449nobodyさん
03/02/25 11:40ID:???板にはともかくスレに誘導はしてないだろうよ…
0450437
03/02/25 15:57ID:???perlからtelnetで接続させて起動させるように書きました。
まあ、目的は達成できたのでヨシとします。
暇なときにでも勉強するでス。
ありがとう。
余談だがwin9x系だとtelnetdにろくな物が無いのに愕然とした(涙
0451nobodyさん
03/02/25 17:11ID:wR5lMZNWsystemでファイルのコピー等を行った場合に、「○個のファイルをコピーしました」
などのsystemの返り文字が表示されますが、これをスクリプト上で
非表示にする方法はないものでしょうか。
___________
$from="コピー元パス";
$to="コピー先パス";
system("copy $copyfrom/A $copyto");
→1個のファイルをコピーしました。
___________
ご存知の方いましたらお願いします。
0452451
03/02/25 17:13ID:wR5lMZNWsystem("copy $copyfrom/A $copyto"); → system("copy $from/A $to");
0453nobodyさん
03/02/25 20:06ID:???system("copy $from/A $to > nul.txt");
とかでダミーファイルにリダイレクトするってのはどう。
0454nobodyさん
03/02/25 20:33ID:???anhttpdって、クライアント側への表示を勝手にしちゃうの?
って、気づけばここperlスレだった…。
0455453
03/02/25 20:57ID:???/devディレクトリないからあたりまえか。
0456nobodyさん
03/02/25 21:47ID:???nulはデバイスだよ。ファイルとかディレクトリじゃないからパス名はつけられない。
逆にパス名つけたらただのファイルになっちゃう。
0458nobodyさん
03/02/25 23:55ID:???455はUNIXと間違えたと思われ。
UNIXはデバイスファイルという概念を持っていて、デバイスをファイルのように扱う。
そしてパスが/dev/nul。
0459nobodyさん
03/02/26 01:07ID:???use File::Copy;
copy("file1","file2");
0460451
03/02/26 10:45ID:JNJUfkpu最終的にはお客さんの環境に入れ込むのですが、
perlのバージョンが5.0な事とモジュールをこちらで入れる権限がないので
こんな遠回りな事になってしまってるんです・・(涙
system("copy $from/A $to > nul.txt");
は構文ミスになってしまいました。
つかDOS勉強しないとよくわからないって事なんですね・・。
とりあえず応急処置として<!-- -->で囲んでおく事にして、
引き続き調べてみます。
#これってperlの質問じゃなかった・・?すみません
0461nobodyさん
03/02/26 11:07ID:???0462451
03/02/26 13:31ID:???うはー!!できましたっ!
$ENV{COMSPEC}なんて初めて見ました。これなら違う環境でも安心して動かせますね。
本当にありがとうございました。
今夜は2ちゃんに足を向けて眠れませんです。
0463nobodyさん
03/02/26 15:07ID:WD8DDVVN値が一個の場合は(例えば $test=first)
if($first eq ""){
処理;
}
として、
カンマ区切りで複数の場合は(例えば $test=first,second)
if(($first eq "") || ($second eq "")....$testに入ってる値の数だけorで追加..){
処理;
}
という処理をやりたくて
今は$testをカンマで分割して配列にいれて(例えば @x)
$testの値が複数だったばあいは
foreach $i (@x);
if($x[$i] = ""){
処理
}
}
という感じで回して処理してます。動作は問題なくするのですが、
もっとスマートないい方法ないでしょうか?
アドヴァイスをよろしくお願いします
0465まる
03/02/26 17:30ID:T5eWammJ配列で有効にするタグの中身を設定して、それに合致しないものは
gt;などで文字化する、というふうに考えたのですが、これでは
有効になるはずのタグまで文字化されてしまいました。
どう書けば動くようになるでしょうか。
#もっとスマートな書き方もあるような気がするけど・・(^-^;
#設定項目
@tag = "('b'.'/b'.'i'.'/i'.'u'.'/u'.'s'.'/s')";
#タグ無効処理
sub tag {
$value =~ s/</>/g;
$value =~ s/>/</g;
}
0466まる
03/02/26 17:31ID:T5eWammJsub decode{
if ($ENV{'CONTENT_LENGTH'} > 51200) { &error("本文が長すぎます"); }
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@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;
# S-JISコード変換
&jcode'convert(*value,'sjis');
# タグ処理
if ($value ne "<@tag(.*)>") { &tag; }
#改行処理
$value =~ s/\r\n/<br>/g;
$value =~ s/\r/<br>/g;
$value =~ s/\n/<br>/g;
#削除情報
if ($name eq "del") { push(@DEL,$value); }
$FORM{$name} = $value;
}
}
0467まる
03/02/26 17:32ID:T5eWammJこの書き方だと・・(って動かないうちにいっててもしょうがないって)
0468nobodyさん
03/02/26 18:43ID:???0469nobodyさん
03/02/26 19:14ID:h/xtR2PFこれを和鳥に設置したいのですがどういじっても表示されません。
設置自体が不可能なら諦めますが、もし方法があるならお教えいただけませんでしょうか。
0470nobodyさん
03/02/26 19:20ID:???0471nobodyさん
03/02/26 20:23ID:???文字修飾タグだけならspanタグだけ通るようにしてみるとか。
$value =~ s/\t//g; # [TAB]が含まれていたら削除する(これを'<','>'の代用にするため)
if (($value =~ s{(<b[^>]*>)}{$1}g) != ($value =~ s{</b>}{$1}g)){
# 開始タグと終了タグの数が一致しないので鰓。
print qq{タグ鰓};
}
else {
# < を \tに、 > を \t\t に。
$value =~ s{<(b[^>]*)>}{\t$1\t\t}g;
$value =~ s{</b>}{\t/b\t\t}g;
}
上記を<i><u><s>分処理する。(ハシュを使ってループするなり・・・)
# 他のタグは無効と言うことで・・・
$value =~ s/</</g;
$value =~ s/>/>/g;
# \t\t,\tを復元。
$value =~ s/\t\t/>/g;
$value =~ s/\t/</g;
あーあほらしくなってきた鬱。
0472nobodyさん
03/02/26 20:31ID:???&忘れてた鬱。
$value =~ s/</</g;
$value =~ s/>/>/g;
↓
$value =~ s/</</g;
$value =~ s/>/>/g;
0473nobodyさん
03/02/26 20:46ID:???タグの無効処理、一部有効処理は正規表現スレにいけ。
最近でも出た話題だからすぐに見つかるはず。
>>463
どうでもいいが、根本的に考え方がずれてるんだと思われ。
その処理で一体何がしたいのか言ってみるのもあり。
別のもっとスマートなやり方がみつかるかも。
>>469
CGIの設置は、
1.そのCGIを配布しているサイト
2.そのCGIを設置したいサイトのサポート
の順で方法を調べて、それでもさらにわからないなら諦めるのが普通。
それでも諦めきれない未練がましい人間なら、そうだな、
CGIスレに行けばもしかしたらいけるかも知れない。
1も2も失敗しているのなら、いける可能性はほとんどないだろうが。
0474nobodyさん
03/02/26 21:23ID:???CGIをperlで作成しているのですが
ゲームのロビーサーバーの代わりを ホームページ上で作成しようと考えているのですが、
ホームページを参照している クライアントに
TCP-IP、ポート指定 でデータを直接送ることはできるのでしょうか?
ホームページは、フリーでCGIが使えるます。
流れ的にこんな感じです。
0.各クライアントが ゲームを起動しておく。
1.ホームページでログイン処理.
2.ログインしたクライアントのIPアドレスを取得しておく.
3.ホームページ上でゲームの対戦相手を決める.
4.相手が決まったら CGIから各クライアントに
ログインしたときに取得したIPアドレス、ゲーム専用のポートに
対戦相手のIPアドレス、対戦相手の情報を送信して
ピアツーピア接続で 対戦させる。
どうでしょうか 可能ですか?
0476nobodyさん
03/02/26 23:02ID:???可能。詰まったらまたおいで。
0477nobodyさん
03/02/26 23:04ID:???HTMLとブラウザを使っている限り、サーバー側からの情報の送りつけはまず無理と考えろ。
これはPerlとかに限らない話なので、これ以上はスレ違いになるので詳しい説明はしない。
文意を汲み取るならば、>>474のやりたいことは、
ユーザーがブロードバンドであることを前提にして、
鯖を用意し、ユーザーにJavaサーブレットやHSPで作ったexeなどを使ってもらうのが一番現実的だと思う。個人レベルでは。
なので、本気でやる気ならばそれぞれ専用のスレに移動しろ。
0478nobodyさん
03/02/27 11:20ID:SWu201Chpush(@array,"b");
push(@array,"a");
push(@array,"c");
foreach $value (@array){ print "$value\n"; }
これを実行すると、a b a cとなります。
aは1回目に既に配列の中にあるので2回目のaは入れたくないのですが、
どうすればいいのでしょうか。
0479nobodyさん
03/02/27 11:35ID:???push(@array,"a");
push(@array,"b");
#push(@array,"a");
push(@array,"c");
0480nobodyさん
03/02/27 11:42ID:???0483nobodyさん
03/02/27 12:38ID:???# 先に重複をチェックする方法
$append = sub { push(@array, $_[0]) if index("@array", $_[0]) == -1 };
$append->("a");
$append->("b");
$append->("a");
$append->("c");
# ハッシュを使って後からキーを取り出す方法
$hash{"a"} = "";
$hash{"b"} = "";
$hash{"a"} = "";
$hash{"c"} = "";
map { print "$_\n" } sort keys %hash;
0484nobodyさん
03/02/27 14:19ID:???> >>463
> どうでもいいが、根本的に考え方がずれてるんだと思われ。
> その処理で一体何がしたいのか言ってみるのもあり。
> 別のもっとスマートなやり方がみつかるかも。
テキストボックスの名前を羅列したファイルを参照して
フォームメール中の対応するテキストボックスを未入力不可にするスクリプトで
氏名とか住所とかはテキストボックスが複数にわかれてるので
firstNAME,familyNAMEと設定ファイルに書くと
orで条件わけしようと思ったんですが
よく考えたらorにする必要なかったです
氏名の場合なら単純に
firstName
familyName
と設定ファイルに書いて
一個ずつ条件分岐させればよかった話でした。
そもそも未入力不可のテキストボックスを指定する方法があまりよくない気がしてきだした…
0485nobodyさん
03/02/27 16:01ID:???下のやり方でうまくいきました
有難うございます
0486nobodyさん
03/02/27 18:06ID:???0487nobodyさん
03/02/27 19:13ID:???#IN:$seireki 西暦
#OUT:$val[0] 元号 $val[1] 年
function wareki($seireki) {
$gengo=array(
'1989'=>'平成',
'1926'=>'昭和',
'1912'=>'大正',
'1868'=>'明治'
#後は自分で
);
while(list($nen, $gen) = each($gengo)) {
if($seireki >= $nen) {
$val[0] = $gen;
$val[1] = $seireki - $nen + 1;
return($val);
}
}
exit;
}
?>
0488487
03/02/27 19:18ID:???すまん
0490486
03/02/27 21:39ID:???さんこす
0491nobodyさん
03/02/28 08:20ID:nTu2mU2Wキー1=値1
キー2=値2
みたいなフォーマットのファイルを扱うクラスがどこかにあったと思うのですが、
名前を教えて下さい。
0492nobodyさん
03/02/28 08:24ID:???0493nobodyさん
03/02/28 08:37ID:0F+7IAI5use Class;
my $class = new Class();
$class->method();
$class = undef;
クラスの使い方なんか、たったこれだけじゃなかとですか。
0495nobodyさん
03/02/28 13:08ID:???0496nobodyさん
03/02/28 14:41ID:6S1ggN3lただ、標準モジュールにそういうクラスがあるなら、配布しなくていいからそっちのほうがいいです。
0498nobodyさん
03/02/28 19:27ID:???new Class()で返ってきたのは、おそらく、オブジェクトなので$classという変数名は不適切。
変数を破棄する場合は、undefを代入するよりも、undef $hoge;の方が意味がわかりやすい。
0500nobodyさん
03/02/28 20:15ID:???0502nobodyさん
03/03/01 21:02ID:???ファイルのリスト @files を、更新が古い順に並べ替えたいんですが…
一応自分でも考えてみました。
@new = ();
foreach (@files){
push @new, (stat $_)[9] . "<>" . $_;
}
@files = ();
foreach (reverse(sort @new)){
my(undef, $x) = split /<>/;
push @files, $x;
}
これでできそうなんですが、もっといい方法があるような気がします。
もっといい方法があれば教えて下さい
お願いします。
0503502
03/03/01 21:25ID:???0504nobodyさん
03/03/01 21:49ID:???my %hash;
foreach(@new){
$hash{(-M $_)} = $_;
}
foreach(sort{$b <=> $a} keys %hash){
push(@file, $hash{$_});
}
うーん…。
0505nobodyさん
03/03/01 21:58ID:???でいけるかな
0506nobodyさん
03/03/02 02:50ID:???同時刻のファイルが消される。
>>505
比較の度に stat を呼ぶのはマズい。
手っ取り早くやるならこう。
@files =
map $_->[0],
sort { $b->[1] <=> $a->[1] || $a->[0] cmp $b->[0] }
map [ $_, -M ],
@files;
0507nobodyさん
03/03/02 11:30ID:???0509504
03/03/02 12:33ID:???確かに同時刻のファイルが消されます。
忘れてました。
シュワルツ変換(Schwartzian Transform)ですね。
やっぱり覚えた方がいいかな。。
0510nobodyさん
03/03/02 13:14ID:???0511nobodyさん
03/03/02 15:00ID:???Schwartzian Transform はデリファレンスのオーバーヘッドがあるんで、
同じ事をより効率良くやるには地道に作業変数を作ってソートした方が
いいらしい。
{
my @time;
push @time, -M for @file;
@file = @file[
sort {
$time[$b] <=> $time[$a] || $file[$a] cmp $file[$b]
} 0..$#file
];
}
>>508
1行(と言うか1文)に詰め込む云々より、この作業変数の為にブロックが
増える所がエレガントでないとは思うがな。
0512初心者
03/03/02 17:23ID:EYbp7ypMperl内で、EXEファイルを実行したいのですが。
0514502
03/03/02 17:57ID:???おかげでできそうです
初めてなんですけどここの板の人って親切ですね
また何か困ったことがあったらよろしくお願いします。
0515nobodyさん
03/03/02 18:29ID:???0518nobodyさん
03/03/03 00:20ID:???$b="b";
@a[0]="a";
printf("[%s]",$b);
### [a]と表示
0520nobodyさん
03/03/03 00:58ID:???@a[0]と$bを同じ変数として扱う方法はありますか?
という質問です。
@a[0]="a";によって$b="b";が上書きされるという事を表現したかったんです。
説明不足で申し訳ありません。
0522nobodyさん
03/03/03 01:04ID:pK+Ijnrw0524nobodyさん
03/03/03 01:30ID:???local *b; # 動的スコープに注意
*b = \$a[0];
$b = 'b';
$a[0] = 'a';
print "[$b]";
0525nobodyさん
03/03/03 01:34ID:???0527nobodyさん
03/03/03 01:36ID:???local *b; # 動的スコープに注意
*b = \$a[0];
$b = 'b';
$a[0] = 'a';
print "[$b]";
my @a;
local *b; # 動的スコープに注意
*b = \$a[0];
$b = 'b';
$a[0] = 'a';
print "[$b]";
my @a;
local *b; # 動的スコープに注意
*b = \$a[0];
$b = 'b';
$a[0] = 'a';
print "[$b]";
my @a;
local *b; # 動的スコープに注意
0530nobodyさん
03/03/03 03:24ID:MIMHRhQC記事削除のやり方がワカランチンです。
投稿に記事ナンバーをつけ、削除のフォームに記事ナンバーを入力して
削除って形をやりたいんですが・・・
よかったら上記の簡単なコードの流れを教えて下さい。お願いします。
0532nobodyさん
03/03/03 04:11ID:???管理人削除とか既にできてるならそれの応用で。
0533nobodyさん
03/03/03 04:18ID:???∧_∧ | | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ´Д`)// < 先生!こんなのを発見シマスタ!
/ / |
/ /| / \ http://saitama.gasuki.com/hiroyuki/
__| | .| | \
\  ̄ ̄ ̄ ̄ ̄ ̄ ̄\ \_____________
||\ \
||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
|| || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
.|| ||
0534nobodyさん
03/03/03 14:30ID:yTVIkXIk使いたい場合、(例1)引数としてハッシュ丸ごと渡してサブルーチンで
取り出すのと、(例2)呼び出し前に取り出して一つだけを引数として
渡すのでは、呼び出し以降の効率の違いはあるのでしょうか?
例1
&shori (%DATA);
sub shori {
my %DATA = @_;
$DATA{'name'} を処理
}
例2
$name = $DATA{'name'}; ← これは既に得られているものとする
&shori ($name);
sub shori {
my $name = @_;
$name を処理
}
0535nobodyさん
03/03/03 16:30ID:???引数にハッシュを指定すると、ハッシュの各要素がすべて展開されて渡されるから
効率は悪いかもしれない。特にサブルーチン側で別のハッシュにコピーするのは
ちょっと良くないんじゃないかな。
&shori(%DATA) → &shori('key1','value1','key2','value2', ... )
使う値が1つだけであれば、例2のように1つだけ渡すのがいいと思う。
またはリファレンスを使うとか。
&shori(\%DATA);
sub shori {
my $hashref = shift;
# $hashref->{name} または $$hashref{name} のように参照する
}
0537nobodyさん
03/03/03 20:33ID:F3LmFaEYhtmlからcgiを呼び出すときに、IMGタグを使って呼び出すには
どうすればいいのでしょうか?
イメージタグを出力するだけでは駄目なんですね。
ご存知の方いらっしゃいましたら、お願いします。
0538nobodyさん
03/03/03 20:35ID:???0539nobodyさん
03/03/04 00:02ID:???フリーのアクセスカウンター使ってろ。
それの仕組みが理解できるようになってから自作とかほざけ。
それに、ここはPerlのスレであってCGIのスレじゃねえ。
0540nobodyさん
03/03/04 00:43ID:???>それに、ここはPerlのスレであってCGIのスレじゃねえ。
はプログラム板のこっちだと思われ。
Perlについての質問箱 3箱目
http://pc2.2ch.net/test/read.cgi/tech/1041205885/l50
晒しageとくな。
0541nobodyさん
03/03/04 02:26ID:???0542nobodyさん
03/03/04 09:56ID:???ええと、時間なのですが、昨日の時間などとか、イロイロ出したいのですが一番手っ取り早い方法はなんでしょう。
今考えた方法は、現在時刻
2003/03/04/01:01.00
(年/月/日/時:分.秒)
から引いたり足したり、繰り上げたりするのを考えたんですが、非常に効率悪くて作りにくいです。
特に、繰り上がったり繰り下がったりするのが大変です。
しかもうるう年とかよく分からないし。汗
超初心者な事やってますか?俺
どうやれば手っ取り早く出来るのでしょうか?
0543nobodyさん
03/03/04 10:27ID:???で増減分を$hogeにつっこむ。
0544542
03/03/04 10:47ID:???ありがとうございます。
あまりに俺が房だったようですね…。
単位は秒ですよね?秒でやってみます。
m(_ _)m
0545nobodyさん
03/03/04 16:01ID:gscrXgmOmkdir('./testing',705);
open (NTT,'./vcount/vcount.cgi')|| die "ファイルを開けません :$!\n";
@nt = <NTT>;
close (NTT);
open (VVT,'./testing/vcount.cgi');
print VVT "@nt";
close (VVT);
exit();
"./vcount/vcount.cgi"の内容を"tester"ディレクトリの作りその下に"vcount.cgi"で作りたいのですが
上の記述ではフォルダが作られても中にファイルが生成されません。
どうしてでしょうか。要はあるディレクトリ内のファイルを全て別のディレクトリに自動コピーさせたくて
とりあえず1ファイルに絞って書いてみました。どうすれば内容を自動コピーできるんでしょう。
環境はWin98とActive Perl、An HttpdをオンラインでダイナミックDNS経由で自分のPCのC
GIを実行しています。
0546nobodyさん
03/03/04 16:06ID:???open (VVT,'>./testing/vcount.cgi');
それから print VVT "@nt"; だと期待と違った結果になるので注意。
print VVT @nt; のように汁。
0547534
03/03/04 16:19ID:???0548nobadyさん
03/03/04 16:44ID:???チェックが入ったままにするにはどうしたらよいでしょうか?
個人データを扱う物で、複数回内容を書き換える事を前提にしています。
ご存知の方いらっしゃいましたら宜しくお願いします。
0549nobodyさん
03/03/04 16:49ID:gscrXgmOありがとうございます!!きっちり生成されました!!
助かりました!
0553552
03/03/04 18:20ID:???で、checked属性にブール値を設定する
0555nobodyさん
03/03/04 20:24ID:???をPerlで読み込む場合はopen関数ではないんでしょうか?
ペーペーにはまだまだ手の出ないコードでしょうか?
同ディレクトリとかつながっているディレクトリのデータを読み込む事を
やっていて、ふと思ったので。
0556T女の竹田
03/03/04 20:27ID:???もうその質問何十回目だろう(笑
FAQでも作るべきかな?
LWP::Simpleってので調べてみるといいよ。
WinのActivePerlなら最初から入ってるはず。
0557nobodyさん
03/03/04 20:37ID:???例えば、<em>mona>/strong>や
終了タグの閉じ忘れでエラーがでる
のですが、具体的にどうすればよいのかさっぱりです。
何がいい方法があれば教えて頂けないでしょうか。
0558nobodyさん
03/03/04 20:40ID:???validatorにかけてみる。
http://validator.w3.org/
0559557
03/03/04 20:44ID:???>>558
例えば掲示板の投稿時なんかに最低限のチェックをしたいだけなのでvalidatorはちょっとです。
0561577
03/03/04 20:58ID:???>>560さん
タグは属性をもつものや空要素も含めて全て許可しています。
最低限属性を持たないタグの整合性だけでもチェックしたいのですが。
0565validator厨
03/03/04 22:15ID:???0566nobodyさん
03/03/04 22:35ID:???0567T女の竹田
03/03/04 22:50ID:???タグの中で'<'や'>'が書けないのは仕様です。
my $temp = $to_check;
$temp =~ s|<!--.+?(-->)||sg;
$temp =~ s{<(script|style).*?(</\1>)}{}sgi;
$temp =~ s{</?(br|p|li|hr|meta|input|img|base)[^>]*>}{}sgi; # 閉じないことを許可するタグ
while ($temp =~ s|<(\w+)[^>]*>[^<>]*(</\1>)||si){}
error() if $temp =~ /[<>]/s;
>>566 気づかなかった。
0568561
03/03/04 22:53ID:???取りあえずこんなの書いてみますたが
$data = "<a><b>a</b></a><c /><d></f>";
my(@stack) = ();
while($data =~ /<\/?(\w+)\s*.*?>/){
if($data =~ /<(\w+)>/){
push(@stack,$1);
}elsif($data =~ /<(\w+)\s*\.*?\/>/){
;
}elsif($data =~ /<\/(\w+)>/){
$tmp = pop(@stack);
if($1 ne $tmp){die "不整合";}
}
$data =~ s/<\/?(\w+)\s*.*?>//;
}
print "end\n";
なんかスマートじゃないですね。というかそれ以前に正規表現が怪しい。
属性がつくともうだめぽ
>>565
きっと誰も従いませんよ(w
0570T女の竹田
03/03/04 23:03ID:???どっちにしても役に立たなさそうだけど。
$temp =~ s|<!--.+?(-->)||sg;
$temp =~ s{<(script|style|pre|textarea)(\s[^>]*)?>.*?(</\1>)}{}sgi;
$temp =~ s{</?(br|p|li|hr|meta|input|img|base)(\s[^>]*)?>}{}sgi; # 閉じないことを許可するタグ
while ($temp =~ s|<(\w+)(\s[^>]*)?>[^<>]*(</\1>)||si){}
0571nobodyさん
03/03/04 23:22ID:TX/Dujet$str2="2003年03月04日" を生成したいのですが
どうすればよいですか?
0573561
03/03/04 23:24ID:???正規表現雑技の方は$(の辺りが今一解読できてませんが。
>>570さん
役に立たないなんてそんな。
\数字は目からウロコでした。さっき書いたコードが恥ずかしいです。
当面の間このコードを借用させて頂きます。ありがとうございました。
0575nobodyさん
03/03/05 01:23ID:???それは $str1 の内容も書き換えるので
($str2 = $str1) =~ s/(\d{4})(\d{2})(\d{2})/$1年$2月$3日/;
0576nobodyさん
03/03/05 23:48ID:LLn1UqDhぜんぜん勉強法が見えてきません。“ Perl で”っていう時点で、もう駄目なのかなあ・・・やっぱ PHP なんですかね?
もし宜しければ、オススメのサイトや参考書を教えて頂きたいのですが。
0578nobodyさん
03/03/06 00:04ID:/oqmBN820579nobodyさん
03/03/06 00:09ID:???newでの変数初期化がされない現象が起こるのですが、これはperlの仕様ですか?
↓-------------------- a.pl
package a;
sub new{
my $this=shift;
my $a=0;
my $obj{'obj'=>$a};
bless $obj,$this;
return $obj;}1;
↓--------------------- b.pl
package b;
require('./a.pl');
sub new{
my $this=shift;
my $b=0;
my $obj{'obj'=>$b};
bless $obj,$this;
return $obj;}
sub test{
my $a = new a;
print "a=$$a{'obj'}";}1;
↓--------------------- main.cgi
require('./b.pl');
sub test
{my $b = new b;
$b->test();}
-------------------------------------
結果:a=
(何も表示されない)
0580nobodyさん
03/03/06 00:13ID:???まずは道具をインストールする。
で、SQLを適当に理解する。
あとは、
connect prepare execute fetch finish disconnect
0581nobodyさん
03/03/06 00:13ID:???0583nobodyさん
03/03/06 00:18ID:???前置(?)のnewは、コンパイルするときに、それが関数か、
メソッドかを決定しないといけない。
で、newっていうサブルーチンがある(ように見える)から、関数になった。と。
a->new()でどうだ。
0584579
03/03/06 00:22ID:???あい、それは承知してます。
newでオブジェクトのメンバを初期化したいという意味でした。
>>579の場合だと、a.plで
$a=0;
・・・
$obj={'obj'=>$a};
としているのに、bから作成したときは$a->{'obj'}に0が入っていないのです。
(0以外でも同様。main.cgiから直接作成した場合は初期化される)
これがバグなのか、仕様なのかどこにも説明してないので設計に困ってます。
0586nobodyさん
03/03/06 00:26ID:???http://www.geocities.co.jp/SiliconValley/5634/t82E2_0001.html#1941
http://www.geocities.co.jp/SiliconValley/5634/t82A2_0003.html#2203
0587nobodyさん
03/03/06 00:28ID:???0589nobodyさん
03/03/06 01:02ID:???0590nobodyさん
03/03/06 11:24ID:rJoYB8KP0592nobodyさん
03/03/06 12:35ID:nlUIeg7X日本語を交えて変数を作りたいのですが、
「全部」ハッシュにしたらアホでしょうか?
$file{'ログファイル'}
$file{'登録ファイル'}
やっぱ重くなりますか?
アホ丸出しのような気がしますが、この方が作りやすいんです。
0595nobodyさん
03/03/06 13:28ID:???0597nobodyさん
03/03/06 15:09ID:???そでつ
0598nobodyさん
03/03/06 16:25ID:???Unicodeでなんとかならんか?
0599nobodyさん
03/03/06 16:42ID:???別にいいんじゃない?
ハッシュの構造上、考えてるほど重くはならないよ。
ただ、他人がそのソースを見たら( ´,_ゝ`)プッ とは思うかも。
0600nobodyさん
03/03/06 18:20ID:mX/0qgeVそんなあなたにPerlのオブジェクト指向文法!
$this->{field} = 'test';
$this->{公安二課課長補佐} = undef;
主な利点:日本語がちょっとだけ目立たない。
0601nobodyさん
03/03/06 18:25ID:???> use encoding "euc-jp"; # スクリプトと同じ文字コードを指定
> use utf8;
> my $人 = 1;
> $人++; # 私たちは繁殖している!
0602601
03/03/06 18:26ID:???0604nobodyさん
03/03/06 20:58ID:+0RpBVtXppm> install win32-api
Error: no suitable installation target found for package win32-api.
と表示されインストールできませんでした。
ppm>sarch win32-api
ppm> search win32-api
Searching in Active Repositories
1. Win32-API-OutputDebugString [0.03] OutputDebugString Win32 API support
ppm> install 1
Package 1:
Error: no suitable installation target found for package
Win32-API-OutputDebugString.
サーチをかけてインストールしてもパッケージがないと言われます。
また、
no suitable installation target found for package
の一文で検索をかけても英語圏HPしかでてこず、多分どこかにパッケージを
ぶち込んだらOKだと言う解釈なのですがどうにもヘタレ読解力ではキビシイです。
アドバイスお願いできないでしょうか?
0606nobodyさん
03/03/06 21:13ID:+0RpBVtX0607nobodyさん
03/03/06 21:46ID:+0RpBVtX環境はXPproでc¥perlにperlをインストールしています。
0608nobodyさん
03/03/06 22:41ID:???川o・-・)ノ <先生!こんなのがありました!
__/ / /
\(_ノ ̄ ̄ ̄\
||ヽ|| ̄ ̄ ̄ ̄||
...|| ̄ ̄ ̄ ̄||
http://saitama.gasuki.com/shinagawa/
0609592
03/03/07 12:00ID:???分かりました。ありがとうございます。
別に
アホ丸出しだろうが
( ´,_ゝ`)プッと思われても構わないので
今後は全部ハッシュで作ろうと思います。
0610nobodyさん
03/03/07 16:16ID:o/kX6MY9逆の「特定のホストからのアクセスをはじく」アクセス制限のCGIしか見つけられず
そこで、これを改造したら使えないかなあと考えました。
が、どこをどういじって良いのか見当がつきません。どなたかお知恵を貸してください・・。
@deny = ("*.co.jp","*.hoge.net");
sub get_host {
$host = $ENV{'REMOTE_HOST'};
$addr = $ENV{'REMOTE_ADDR'};
# gethostbyaddr関数を使用する場合は1
$gethostbyaddr = 1;
if ($gethostbyaddr) {
if ($host eq "" || $host eq "$addr") {
$host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2);
}
}
if ($host eq "") { $host = $addr; }
}
sub axs {
# ホスト名を取得
&get_host;
if ($deny[0]) {
local($flag)=0;
foreach (@deny) {
if ($_ eq '') { last; }
$_ =~ s/\*/\.\*/g;
if ($host =~ /$_/) { $flag=1; last; }
}
if ($flag) { &error("許可されていないアクセスです") }
}
}
0612610
03/03/07 16:20ID:o/kX6MY9sub axs {
&get_host;
if ($_ ne "@deny"){ &error("許可されていないアクセスです")}
}
0613610
03/03/07 16:21ID:o/kX6MY90614nobodyさん
03/03/07 16:24ID:???名前<->点数<->偏差値<-> の様になってます。
これを名前でuniqしたいのですが、賢い方法はあるでしょうか?
一応自分で作ったのですが、マヌケな感じで最後の人が表示されないようです。
識者の方、よろしくお願いします。
--(生データ)---
a<->17<->100<->
a<->20<->68.97<->
a<->20<->68.97<->
a<->27<->87.1<->
b<->27<->87.1<->
c<->13<->41.94<->
c<->14<->87.5<->
c<->22<->75.86<->
c<->22<->75.86<->
c<->8<->47.06<->
d<->14<->82.35<->
d<->14<->87.5<->
d<->25<->86.21<->
d<->25<->86.21<->
d<->31<->100<->
e<->16<->100<->
e<->17<->100<->
e<->27<->93.1<->
--(生データ)---
0615nobodyさん
03/03/07 16:26ID:???自分で作ったマヌケなプログラムです。
@sortedに生データが入っているとして、
foreach (@sorted){
($s_name,$s_point,$s_rate) = (split(/<->/))[0,1,2];
if($s_name eq $old_name){
$total_p = $s_point + $old_point;
$total_rate = $s_rate + $old_rate;
$old_name = $s_name;
$old_point = $total_p;
$old_rate = $total_rate;
$howmany ++;
}elsif ($s_name ne $old_name){
$average=sprintf('%4.2f', $old_point / $howmany); $average+=0;
$rate_avg=sprintf('%4.2f', $old_rate / $howmany); $rate_avg+=0;
push(@uniq, "$old_name<->$old_point<->$howmany<->$average<->$rate_avg\n");
$old_name = $s_name;
$old_point = $s_point;
$old_rate = $s_rate;
$howmany = 1;
}else{ print "Error!! does not match!!\n";}
}
shift @uniq;
@uniq = reverse sort { (split(/<->/,$a))[3] <=> (split(/<->/,$b))[3] } @uniq;
0616610
03/03/07 16:33ID:o/kX6MY9待った・・・根本的なところが、、、
ごめん、超厨房な質問。
$_ の意味はなんでしょう。$名前 (変数)とは違いますよね。
#手元の入門書には$hogehogeと@hogehogeの説明はあるんだけど$_がない
0618610
03/03/07 16:37ID:o/kX6MY9そういうことなんですね・・。
ということは>>612はダメじゃん(死)
0619610
03/03/07 16:39ID:???0620614
03/03/07 16:43ID:???それよりおらの質問にも答えてけれ
foreach (@deny) {
$_ =~ s/\*/\.\*/g;
if ($host =~ /$_/) { last; }
}
if ($_ eq '') { $flag=1; last; }
if ($flag) { &error("許可されていないアクセスです") }
}
}
0621614
03/03/07 16:47ID:???foreach (@deny) {
$_ =~ s/\*/\.\*/g;
if ($host =~ /$_/) { last; }
}else{ &error("許可されていないアクセスです") }
}
0622610
03/03/07 16:50ID:???おあ、ありがとう。
今思いついて書き込もうとしたんだけど、おもっきし間違ってたよーです(冷汗)
>それよりおらの質問にも答えてけれ
ごめん・・・わっちには手に余るんだ・・初心者すぎて(苦)
#掲示板カスタマイズくらいしか経験ない。
0623610
03/03/07 17:03ID:o/kX6MY9sub axs {
&get_host;
foreach (@deny){
if ($_ eq '') { last; }
$_ =~ s/\*/\.\*/g;
if ($host =~ /$_/) { last; }
if ($_ ne "@deny"){ &error("許可されていないアクセスです")}
}
}
アクセスをはじけてるかどうかはまだチェックしてないけどね。
>>614さん、ありがとう(*^^*) 感謝です。
0624nobodyさん
03/03/07 19:23ID:???例"5aB0"
↓
0x35
0x61
0x42
0x30
0625nobodyさん
03/03/07 19:38ID:UTyY6aWY$str = "ある文字列";
chomp $str; # 必要なら
foreach( split //, $str ){
printf "0x%x\n", ord;
}
0627nobodyさん
03/03/07 19:58ID:UTyY6aWYエラーチェックはしてないでつ
あと@uniqの内容がこれで良いのか自信なし
@sorted = でーた;
@uniq = ();
my %count = ();
my %sum_point = ();
my %sum_rate = ();
foreach(@sorted){
my($name, $point, $rate) = (split /<->/)[0..2];
$count{$name}++;
$sum_point{$name} += $point;
$sum_rate{$name} += $rate;
}
foreach(sort keys %count){
my $ave_point = sprintf "%4.2f", $sum_point{$_} / $count{$_};
my $ave_rate = sprintf "%4.2f", $sum_rate{$_} / $count{$_};
push @uniq, join("<->", $_, $sum_point{$_}, $count{$_}, $ave_point, $ave_rate);
}
0628nobodyさん
03/03/07 20:48ID:???質問1.この中の<br>タグ(大文字のタグも含む)の数を数えたい場合どうすればいいでつか?
質問2.この中の後から数えてn番目の<br>タグ(大文字のタグも含む)以降の文字列を別変数に入れたい場合どうすればいいでつか?
お頼み申し上げ候
0629nobodyさん
03/03/07 21:29ID:???#三回マッチ
$val = "1<br>2<br>3<br>4<br>5<br>6<br>7<br>";
$val =~ /((.*?<br>){3})/;
print "$'\n";
0630629
03/03/07 21:32ID:???大文字も含むなら
$val =~ /(.*?<br>){3}/i;
0631nobodyさん
03/03/07 22:16ID:???2.の良い方法が思いつかないけどとりあえずこんなんで
index使ったほうがいいのかな
1. count_br(文字列)
2. separate_br(文字列,n番目)
sub count_br{
my $str = shift;
return ($str =~ s/<br>//ig);
}
sub separate_br{
my($str, $cnt) = @_;
$cnt = count_br($str) - $cnt;
my $pre = join "<br>", (split /<br>/i, $str." ")[0 .. $cnt];
return substr($_[0], length $pre );
}
0632nobodyさん
03/03/07 23:00ID:???my $new = join('', @line[ $n .. $#line ]);
0633nobodyさん
03/03/07 23:06ID:???0634631
03/03/07 23:12ID:???漏れもそれを最初は考えたんだが、<BR>以外のタグが
あったときなんかはどうすれば良いのでしょう?
回避方法が思いつかずあんな恥ずかしいソースに…
0637nobodyさん
03/03/07 23:29ID:???my $want = 3; # 3以降
my $count = 0;
my $after = '';
while($val =~ /<br>/ig){
if (++$count == $want){
$after = substr($val, pos($val));
}
}
print "count=$count after=$after\n";
出遅れた…。
0638631
03/03/07 23:33ID:???n番目の<BR>以降がn番目の<BR>を含まないならこうでいいのかな?
ベンチマークしたらほとんど変わらなかったけどソースすっきりです。
sub separate_br{
my($str, $cnt) = @_;
my @line = $str =~ /.*?<br>/ig;
return join('', @line[ ($#line-$cnt+2) .. $#line ]);
}
0639nobodyさん
03/03/08 00:35ID:???調べる事ができるのでしょうか? PERLだと、どのような
処理を用いると負荷を上げてしまうのでしょうか?
Admin設置禁止CGIスクリプト情報
http://chat-jp.com/announce/denycgi/index.html
0641nobodyさん
03/03/08 01:11ID:???0642628
03/03/08 03:36ID:???うまくいきました。
ありがとうございます。
今回は漏れの厨な脳に一番マッチした637さんのを使わせていただきました。
ただ、後から数えてn番目の<br>タグ以降の条件が前から数えてになってまつた。
0643nobodyさん
03/03/08 04:20ID:???私も詳しく負荷率調べる方法教えて欲しいのです。
0645nobodyさん
03/03/08 08:09ID:ijgyFeL70646nobodyさん
03/03/08 09:22ID:2Y4AuOiphttp://homepage3.nifty.com/digikei/
http://homepage3.nifty.com/digikei/sample/sample.html
,、-―-、
丿 <`) __
,、- ''' "二ヽ_(ヽ'`(二ニ・ | \_
/ 、 !__'、_┌´ │ / `' ー┐
/ ヽ | ` | | |
___ | ヾ__| | _,、r‐'',ニ=- | / _,、-‐'゙
_| '、| ミ/ ゙、 |_,∠-''´ ̄`'ー、  ̄|-''" |
\|. | l___l / ̄ヾ`´` | ̄ ̄ ̄`'''iー、
. |/゙|  ̄ ヽ_,、-''´`ヽ _,、,、,、,、_|______|_
| ( ´ ,、- ''゙ 丿 ヾ二二二二二二二二二|ニ!
ヽ<二二二二二>~/ / / └‐┬─‐────┬┘
0650nobodyさん
03/03/08 12:23ID:???掲示板の、
ログデータ読み込んで整形してHTMLで出力させる
みたいな感じです。
他で差が出るとすると連続書き込みさせた場合ですかね。
0651nobodyさん
03/03/08 12:52ID:???これは… 激しく読むのが苦痛。
CPU負荷は環境によるので一概には言えないが、
メモリにはかなり厳しそうなスクリプトですな。
で、>>640を読む限りだと
・禁止してないスクリプトなら設置していいよ
・でも負荷が高いときは勝手に止めることがあるからね
ということなので、CPU負荷は調べる必要ないかと。
0652世直し一揆(コピペ推奨)
03/03/08 13:01ID:lDVM7LmW●とにかく気が小さい(神経質、臆病、二言目には「世間」(「世間」と言っても、同じA型を中心とした一部の人間の動向に過ぎないのだが・・・)、了見が狭い)
●他人に異常に干渉し、しかも好戦的でファイト満々(キモイ、自己中心、硬直的でデリカシーがない)
●妙に気位が高く、自分が馬鹿にされると怒るくせに平気で他人を馬鹿にしようとする
(ただし、相手を表面的・形式的にしか判断できず(早合点・誤解の名人)、実際にはた
いてい、内面的・実質的に負けている)
●本音は、ものすごく幼稚で倫理意識が異常に低い(人にばれさえしなければOK!)
●権力、強者(警察、暴走族…etc)に弱く、弱者には威張り散らす(強い者にはへつらい、弱い者に対してはいじめる)
●あら探しだけは名人級でウザイ(例え10の長所があってもほめることをせず、たった1つの短所を見つけてはけなす)
●基本的に悲観主義でマイナス思考に支配されているため性格がうっとうしい(根暗)
●単独では何もできない(群れでしか行動できないヘタレ)
●少数派の異質、異文化を排斥する(差別主義者、狭量)
●集団によるいじめのパイオニア&天才(陰湿&陰険)
●悪口、陰口が大好き(A型が3人寄れば他人の悪口、裏表が激しい)
●他人からどう見られているか、人の目を異常に気にする(「〜みたい」とよく言う、
世間体命)
●自分の感情をうまく表現できず、コミュニケーション能力に乏しい(同じことを何度
も言ってキモイ)
●表面上協調・意気投合しているようでも、腹は各自バラバラで融通が利かず、頑固(本当は個性・アク強い)
●人を信じられず、疑い深い(自分自身裏表が激しいため、他人に対してもそう思う)
●自ら好んでストイックな生活をしストレスを溜めておきながら、他人に猛烈に嫉妬
する(不合理な馬鹿)
●後で自分の誤りに気づいても、強引に筋を通し素直に謝れない(切腹するしかない!)●自分に甘く他人に厳しい(自分のことは棚に上げてまず他人を責める。包容力がなく冷酷)
●男は、女々しいあるいは女の腐ったみたいな考えのやつが多い(例:「俺のほうが男
前やのに、なんでや!(あの野郎の足を引っ張ってやる!!)」)
0653nobodyさん
03/03/08 14:48ID:GxFJGMsn$in{$key} .= "\0" if (defined($in{$key}));
の「.」ってなんでそう?探してもみつからず、気になって気になって
夜も寝ずに昼寝してしまいます。
0655nobodyさん
03/03/08 14:52ID:???$a = $a . $b;
$a .= $b;
上を短縮した書き方が下。
他に += とか、ほとんどの演算子でこのような記法ができる。
0656nobodyさん
03/03/08 14:57ID:???ありがとうございました。これでぐっすりできます。多謝。
0657nobodyさん
03/03/08 18:26ID:6Zv33rxCuse constantがイイ!
という意見が出てるのを見てから見栄えも上級者っぽい
という事もあって使いまくってたんですけど
何故配布CGIとかだとさっぱり使ってないんでしょう?
そんなの配布サイトに聞けッ!て感じですけど
ご意見聞かせて下さい。
0658nobodyさん
03/03/08 18:30ID:???0659nobodyさん
03/03/08 18:33ID:???糞みたいなスクリプトでもそこそこ動けばいいんだよ。
あと、Perl4でも動くようにっていう配慮もあるかも。
(でも実際は新しい記法についていけてないだけの人のほうが多そうだ)
0660657
03/03/08 18:46ID:6Zv33rxCありがとうございます。
配布CGIのほとんどが使って無いので
何か自分の知らない落とし穴でもあるんじゃ?と思ってました。
ほんのわずかでも早くなってデメリットが無いのなら
使わない手は無いという感じで、これからもビシバシ使おうと思います。
0661nobodyさん
03/03/08 19:05ID:???Perlではこんな面倒なことをしないと定数すら使えないのか。
0662nobodyさん
03/03/08 19:15ID:???0663nobodyさん
03/03/08 19:32ID:???@a=grep(!$b{$_}++,@_);
foreach (@a){
print "$_\n";
}
grepの第一引数の意味がよくわかりません。({$_}とか++の意味)
重複したものを探して真の場合は取り除いている
ようなきはするのですが・・
どなたか教えてください。
0664nobodyさん
03/03/08 19:49ID:g3+hGhZvそれで新着情報ボードモードにしてあるので
$comと比較して「二重投稿禁止」のエラーを出させないようにしたいんですが
# 二重投稿の禁止
($num,$name,$com) = (split(/<>/, $lines[0]))[0,2,5];
&error("二重投稿は禁止です") if ($in{'name'} eq $name && $in{'comment'} eq $com);
↑この部分を全部消したら$numに干渉せず
記事全て[1]になってしまいます。
$in{'comment'} eq $comだけを消してもエラーが出てしまいます。
どなたか教えてください。
0665nobodyさん
03/03/08 20:09ID:???まず初期状態では %b は未定義なので、評価するとすべて偽。
grepの第1引数は、真で返すとその要素が戻り値のリストに入る。ここまでOK?
要素をキーとして $b{} を評価する。これが偽なら、はじめて出てくる要素なので
この要素をgrepの戻り値として返す。そのとき、第1引数は真にしないといけないので
!で反転させている。で、++して「その要素はすでに返した」というフラグを立てる。
これを繰り返す。
同じ要素が出てくると、$b{} は++されているので「真」になる。!で反転させると偽になり、
grepの戻り値としては返されない。結果、同じ要素は複数返されないことになる。
説明下手でスマソ
>>664
2行目だけ消せばいいと思われ。
0666nobodyさん
03/03/08 20:15ID:???$b{} はハッシュの要素を指す
! は論理否定
$_ はデフォルトの対象となる変数
(この場合はgrepによって第二引数=リストの一部が設定される)
++ はオートインクリメント(この場合は後置:式の評価後、インクリメントが発生)
0669名無しのmakoto君(名前あるじゃん
03/03/08 21:23ID:???教えてください<(_ _)><(_ _)>ペコペコ
検索してもよく出てきませんでした(恥
お願いします(たたかれてもメゲマセン←ハァ?
0671nobodyさん
03/03/08 21:49ID:???はいよ〜
http://www.google.com/search?num=100&hl=ja&ie=UTF-8&oe=UTF-8&as_qdr=all&q=perl+%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%82%AB%E3%82%A6%E3%83%B3%E3%82%BF%E3%83%BC%E3%81%AE%E4%BD%9C%E3%82%8A%E6%96%B9&lr=
0672nobodyさん
03/03/08 21:57ID:???フルパスからファイル名を取得したいので
以下のように作りました。
一応機能的にはokなんですが、もう少し格好良くperlっぽいやり方があれば教えてください。
なんか無駄が多いような・・
$_=$0;
$_=~ s/^(.*)\\(.*)$/\2/;
print "$_\n";
0674名無し.net
03/03/08 22:05ID:HY3rXLfE連想配列(?)についての質問なんですが、
$temp->{'001'} = "1";
$temp->{'002'} = "2";
$temp->{'003'} = "3";
という配列があり、これを通常の連想配列(ハッシュ)で
while (($name, $value) = each(%temp)) {
print "$name = $value<br>\n";
}
とやるのと同じ事をしたいのですが、可能なのでしょうか?
ご存知の方がいらしたら是非教えてくださいm(__)m
%tempを$tempにしたら、500 Internet Server Errorになってしまいました。
0676nobodyさん
03/03/08 22:12ID:???だっけ…、ちと動作させてないから動くかわからん。
0677名無し.net
03/03/08 22:14ID:HY3rXLfEおお。
出来ました。
ありがとうございましたm(__)m
use File::Basename qw(basename);
print basename($0);
>>674
普通にハッシュを使うのではいけないのかな?
$temp{'001'} = '1';
# ...
まぁ、普通にデリファレンスすればいいんだけどさ。
while(my($name, $value) = each %$temp){
# ...
}
でも、サーバーで実験するのはやめたほうがいいよ。
ローカルマシンにperlを入れなさい。
0680nobodyさん
03/03/08 22:25ID:???CGIとして実行するとエラーは全部500になっちゃうから、ちゃんと
エラーメッセージの見られる環境を用意したほうがいいよ。
(コマンドラインで実行させるとか、CGI::Carpモジュールを使うとか)
0681nobodyさん
03/03/08 22:35ID:???0682名無し.net
03/03/08 22:36ID:HY3rXLfESubroutineを梯子して使っているので変数形式のほうがいいかなぁと思いまして・・・。
っていうか、連想配列でのやり方知らないので(苦笑。
すいません。
一応、perlはインストールしてありますが、アップロードして実行して動くか調べてます(ぉぃ
やっぱサーバーに悪影響ですよね・・・。
0688nobodyさん
03/03/08 23:25ID:???>>681みたいなのはどうせクレクレ厨なんだから、技術的なアドバイスしても
徒労に終わるぞ。
0689687
03/03/08 23:29ID:???0691nobodyさん
03/03/09 00:42ID:???なにこの質問
このスレを舐めてるの?
0692nobodyさん
03/03/09 01:39ID:???reverseで反転すると日本語が化けてしまいます。
1バイト文字、2バイト文字が混在していても上手く反転して表示するには、どうすればいいのでしょうか?
また、改行(<br>)とかあっても正常に改行されて、且つ文字化けしない・・・。
よろしくお願いします。
技術的に難しいですか?
0693nobodyさん
03/03/09 01:39ID:???0695nobodyさん
03/03/09 02:36ID:teyBWd6Etimethese(10000,{
'ex1'=>sub {
print "テスト\n";
},
'ex2'=>sub {
print << "EOM";
テスト
EOM
}
});
をDOSプロンプトで実行すると
テスト
テスト
テスト
テスト
・・・・
テスト
ex2: 0 wallclock secs ( 0.60 usr + 0.00 sys = 0.60 CPU)
となります。
ex1: の結果をex2:のすぐ下にでも表示させたいのですが、
どうすればよいのでしょうか。
この結果(ex1: ex2:)はどこかの変数に入っているんですか?
アホな質問ほんとスミマセン・・・・。
0696nobodyさん
03/03/09 02:42ID:???print &jreverse('一応作ってみた。Shift-JIS限定。<BR>とか改行は考慮してないんでそのへんはうまく修正してちょ。');
sub jreverse {
my $str = shift;
my ($i, $f, @jchar) = (0, 0, () );
foreach (unpack('C*', $str)) {
$jchar[$i] .= chr($_);
if (!$f && (($_ > 0x80 && $_ < 0xa0) || ($_ > 0xdf && $_ < 0xfd))) {
$f++;
} else {
$f = 0;
$i++;
}
}
join("", reverse @jchar);
}
0697nobodyさん
03/03/09 03:26ID:???my $r = timethese( 略 );
foreach(keys %{$r}){
my($sec, $usr, $sys, $cnt) = @{$r->{$_}}[0,1,2,5];
printf "%10s: %2d wallclock secs (%5.2f usr + %5.2f sys = %5.2f CPU) @ %.2f/s (n=%d)\n",
$_, $sec, $usr, $sys, $usr+$sys, $cnt/($usr+$sys), $cnt;
}
0698697
03/03/09 03:33ID:???どんなモジュールでも質問する前にドキュメント読むように。
perldoc モジュール名
で、usr+sys = 0 のとき上のルーチンではエラーになるので
適当に直して使ってください。
0699695
03/03/09 04:53ID:xiqLThI6ありがとうございます。
perldoc も読み、更にその日本語訳もネットで読みましたが
まったくわかりませんでした。
そして usr+sys=0 のとき というのがどんな時なのかも
わかりません。よって直し方もわかりません。逝って来ます。
0700nobodyさん
03/03/09 08:51ID:???# shift-JIS 限定
$s = "こんにちは、世界!";
$s =~ s/([\x81-\x9f\xe0-\xfc])([\x40-\x7e\x80-\xfc])/$2$1/g;
$s = reverse($s);
print $s;
0701700
03/03/09 08:58ID:???<br>は適当に処置をよろ。s/>rb</<br>/g;とか。
0702nobodyさん
03/03/09 09:14ID:???unlink ファイルを削除
rmdir ディレクトリを削除
のディレクトリってのは要するにフォルダのことでしょうか?
今まで同義のような曖昧な解釈でしたので一度ビシっと言ってやってください。
0703nobodyさん
03/03/09 09:25ID:???0704nobodyさん
03/03/09 09:29ID:???0705nobodyさん
03/03/09 09:36ID:???ERROR:長すぎる行があります!って怒られたから、URLをうまく貼れないかもしれん
URLを改行して途中で改行した
http://www.google.com/search?as_q=%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%81%A8%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%81%AE%E9%81%95%E3%81%84
&num=10&hl=ja&ie=UTF-8&oe=UTF-8&btnG=Google+%E6%A4%9C%E7%B4%A2&as_epq=&as_oq=&as_eq=&lr=&as_ft=i&as_filetype=&as_qdr=all&as_occt=any&as_dt=i&as_sitesearch=
0706704
03/03/09 09:37ID:???0707704
03/03/09 09:45ID:???こんな香具師にレスつけるなんて…
ダメボ…。
0708真性704
03/03/09 09:48ID:???暇だね・・
>>705
アリガトウございました。よくわかったようなわからないような。
これからチャント理解できるように詰めていきます。
0709nobodyさん
03/03/09 10:45ID:???また、ourなるものがありますが、皆さんどういう場面で使われるのですか?
0710名無し.net
03/03/09 10:58ID:???※ディレクトリとフォルダの違い
ありません。ローカル側で「フォルダ」と言っているのをサーバ上で「ディレクトリ」と言っているだけです。それだけの違いです。
http://www.ayavv.net/d/beginner_hp/022.htm より
↑こんなこといっているサイトがありますけど(−−
0713nobodyさん
03/03/09 13:10ID:???http://hp-design.net/beginning/lecture/html.08.html
こいつと同じこと言っているな(笑)
0714nobodyさん
03/03/09 15:30ID:???は
print "abc";
print "def";
と同義ですか?それとも
print <<EOM
abc
def
EOMと同義ですか?
鯖負荷を軽減させようとEOM使うのはやめたんですがカンマ区切りだと意味がないような気がしてきたので
書籍を見てもPerlだとメモリーの使い方は書いてなかったりする(欝
0721nobodyさん
03/03/09 16:30ID:???インタプリタやスクリプトなら最適化が難しい分余計に。
他の言語を使えというのはひとつのソリューションだろうが、
このスレの趣旨ではなかろう。
0722nobodyさん
03/03/09 16:49ID:???0723nobodyさん
03/03/09 17:04ID:???深読みしすぎかもしれんが、
<<EOM;
EOM
この記法は「EOM」じゃないからね。
ソース出さずに「EOM云々〜」って質問すると恥かくから気をつけよう。
0725nobodyさん
03/03/09 17:17ID:???これどういう意味なんだ?
0728nobodyさん
03/03/09 17:54ID:???0730nobodyさん
03/03/09 18:06ID:2bzPHLiwprint <<"HTML";
<html>
ほげほげ
</html>
HTML
と書いているのですが、どこかで「HTML」と書くのは"格好悪い"
と書かれていた気がします。。
慣例的にはなんと書けば良いのでしょう?
EOFとかになるんでしょうか?
0732nobodyさん
03/03/09 18:18ID:???( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/
(_フ彡 / ←>>731
0734nobodyさん
03/03/09 18:26ID:2bzPHLiw「HTML」格好悪くないですか??
できれば慣例とか知りたいです。
そういう慣例ページみたいのあればうれしいんですが。。
0736nobodyさん
03/03/09 18:41ID:???END_OF_???
EO?
こんなのが多いと思うけどさ。
ラベルと一緒でそれとわかれば何でもいいんじゃないの?
0737nobodyさん
03/03/09 19:27ID:vWAYxQigごもっともです。けど見てみたら同じHTML出力でも
統一されてないようだったのでいったい何の略だ?
と思いまして。。
>>736
なるほど。勉強になりました。EO?をよく見ると思ったら
そういう理由だったのですか。こういうのはEOM、こういう場合は
EOFとか暗黙の常識?みたいのがあると思ってました。
(ある程度はそういうのがあるのでしょうけど)
ありがとうございました。
0738nobodyさん
03/03/09 20:20ID:???日本人なら日本語で。
おわり
# ネタだからね、多分!
0739nobodyさん
03/03/10 00:09ID:???このスレ読むまで意味を考えたこともないことに気付いた。
HTMLはダサくないと思う。
むしろ、そこはHTMLの出力部分であることを明示する意味で、
ソースの可読性に貢献してると思う。
俺も少し考えてみるか……
0740714
03/03/10 01:07ID:???実行速度は確認画面などで時間稼ぎをすればある程度はごまかせますが
機械は誤魔化せないのが辛いです
ちなみに漏れはEOM=End of Messageだと思ってます
EOFは本来ファイルの終わりをさす言葉なので途中で書くことはためわれます
ヒアドキュメントを使うというのは@array=<FH>同様に一気にメモリーを使って実行してしまう書法
対してprint "abc"; print "cde";はwhile()同様にメモリーの消費を抑えて実行する書法だと思っているのですが
だと思っていましたが間違いでしょうか?
0741714
03/03/10 01:11ID:???@array=<FH>;
print @array;
がメモリーの無駄遣い
print <FH> while(<FH>);
ということで、考えてみてください
ついでに695ではありません
0742nobodyさん
03/03/10 02:21ID:???そんな些細な事にいちいちカコイイ!!とかカコワルイ!!とか言ってる方が何か変よ。
0743nobodyさん
03/03/10 02:59ID:???メモリの消費と言うが、ヒアドキュメント程度でperlがシステムから確保する
メモリを使い切るようなコードを書いてるならそっちが問題だろう。
特にサイズを指定しない場合のメモリサイズ知ってるか?
そうそう、答え
>間違いでしょうか?
間違いです。メモリに格納はされません。
>>741
考えるまでもない例えだろ。
0746nobodyさん
03/03/10 08:12ID:???0748nobodyさん
03/03/10 13:37ID:???PerlにはPHPのstaticに相当する関数ってありますか?
それなりにPerlを扱ってきたにもかかわらず、今まで知り得なかったので
もしあったら便利だなーと。
perlfaqにあるね。staticキーワードは無いが、実現は出来る。
perldoc -q static
...
BEGIN { # BEGINが不要なケースもある。が、あったほうが安全
my $counter = 42;
sub prev_counter { return --$counter }
sub next_counter { return $counter++ }
}
...
0751名無し.net
03/03/10 19:23ID:???Perlで半角カタカナを文字化けさせないように利用するにはどうすれば良いでしょうか?
jcode.plを使うと文字化けが発生するのですが・・・。
全角カタカナに直す以外の方法で教えてください
0753名無し.net
03/03/10 19:58ID:???そんなぁ〜(><)
0755名無し.net
03/03/10 21:03ID:???0756T女の竹田
03/03/10 21:22ID:???Shift-JISで通すならjcode.plはいらない。
もちろんEUCでデータを送られたら化ける。
ところで、ページをSJISで表示してるのに、フォームからEUCで送られてくるってこと
あるのかな?前から疑問なんだけど。
0757名無し.net
03/03/10 21:32ID:???出力はJhift-JISにしてますけど、コードやDBはEUCを使ってます。
あと、メールを使うときはjisに変換したり・・・。
なのでjcode.plをどうしても使ってしまいます。
0758nobodyさん
03/03/11 09:23ID:???そのファイルの50行目の値が欲しい時、直接50行目の値を取得することできるんでしょうか。
49回スルーさせるんじゃなくて。
0759名無しさん@Meadow
03/03/11 09:24ID:i+lsKHdVJcode.pmにしれ。
0760nobodyさん
03/03/11 09:33ID:???そもそもネットで半角(ry
>758
固定長ならseekで。可変長なら無理ぽ
0761Fox
03/03/11 10:58ID:eJEHBp/l0763nobodyさん
03/03/11 11:33ID:???ブラウザの実装次第になってしまうのでありうる。
>>757
EUCで半角カナをどう扱うか考えてみましょう。
無理ぽ
>>758
head -50 text.txt | tail -1
0764nobodyさん
03/03/11 11:43ID:???掲示板にはいる前のページとかに
最後に書いた人の名前と時間が表示されてるのがつくりたいです。
ちなみにiモードでやりたいです。
0769の
03/03/11 13:56ID:2/UrfMw3インデックス持ってれば、可変長でも seek で可能だな。
0770nobodyさん
03/03/11 14:06ID:???0776nobodyさん
03/03/11 15:47ID:???exitってさ、ライブラリから使ってもOKだよね?
完全にプロセス死んでくれるよね?
まさかライブラリのみ終了してますた。なんてオチはないよね?
内部処理とかはどーなってるのか全然知らないんで…。
m(__)m
0778776
03/03/11 15:56ID:???0779nobodyさん
03/03/11 15:59ID:???ファイル内部に行なんていう概念はない。
\n毎に行と考えたいのだろうが、ファイルにとってはただの1文字。
どうしてもやるなら読み込んでから改行の数と位置を調べて
計算して3行目に相当する位置へseek。
0780nobodyさん
03/03/11 16:48ID:4+uSO65sって言う便利な記述はないですか?
ないですよね?
0781770
03/03/11 16:56ID:???0784nobodyさん
03/03/11 19:16ID:8fW/w1hx数字を1万通り入れればいいんですけど、さすがに時間の都合で難しい
登録した時のアドレスが違うのかパスワード再発行が処理されない。
以上の状態
他の板で
テキストエリアに入力するよりPerlでも使ってガーっとpostし
たほうが簡単。
といわれましたが、perlは使った事がないんで何とも。
その板の住人に聞くのも板違いかと思って、こちらに移りました。
自分で検索した所、イメージ的に
1,自分のPCをperlが使えるようにする。(できた)
2,perlにてパスワードのエリアにpostするためのファイルを作成
3,自分のPCから実行し、パスワードテキストエリアに挿入
という事で、だいたい合ってますか?
0786nobodyさん
03/03/11 19:21ID:???一応、同情を誘うつもりはありません。
質問スレなので、詳しく書こうかと思って。
その辺伏せれば、まともな答えが返ってこないですよね?
0788nobodyさん
03/03/11 19:29ID:???お説教でしょうか?
まあ、だいたい合っているというのであれば、それはそれで
いいです。
後は自己責任でやります。
どうもありがとうございました。
0790nobodyさん
03/03/11 19:30ID:???0793nobodyさん
03/03/11 19:41ID:???ちょっと面倒そうだなあと言ってみるテスト。
0794nobodyさん
03/03/11 19:42ID:???ダメだったときの結果はわかるのだからそのelseで良いんではないかと考えた。
と、誘導尋問ならおもしろいなと思ったテスト。
0797nobodyさん
03/03/11 19:47ID:???0801nobodyさん
03/03/11 20:12ID:???0802nobodyさん
03/03/11 20:26ID:???0803nobodyさん
03/03/11 21:12ID:???その前に釣られたあなたもはーとびーと
0804nobodyさん
03/03/11 22:51ID:???多人数同時参加型のネットゲームが作りたいです。
どうすればよかとですか?
0806nobodyさん
03/03/12 13:12ID:???perl本体とlib(*.pm)のそれぞれをBuildするコンパイラが違ったりすると
マズい事になりますか?
具体的にはSolaris。perlがSUNのccでBuildされ、lib類(CPAN等)はgcc
でBuildされた場合・・・って感じです。
Shared library 周りで不整合が起きる様な気もするんですが、手元にSUNの
ccが無いので試す事が出来ません。
0808nobodyさん
03/03/12 13:55ID:???インストールしようと思ったのですが、ppm で検索をかけても見付かりません。
http://ppm.activestate.com/PPMPackages/zips/
で 8xxを見たら確かに無いので 6xxにある Image::Magick.zip を使って
ppm install Image-Magick.ppd
したのですが以下のようなエラーが出てきてしまいます。
Error: no suitable installation target found for package Image-Magick.
これはどのように対処したらいいのでしょうか。
0810nobodyさん
03/03/12 15:54ID:eDO5fFOYという正規表現を書こうとしたんですが
どうも書き方が解らず for 文になってしまいます。
どなたかお手本を見せてもらえないでしょうか。
お願いします。
0811nobodyさん
03/03/12 15:57ID:NGPUyx9R数値だよね?
($n % $i == 0)
0813nobodyさん
03/03/12 17:56ID:bplOKqH9思い立ち、エイヤっと全部まるまる取ってしまったら、なんか
すごくスクリプトがスッキリ見えて、前よりも理解しやすくなっ
た。。。。という経験ないすか?
0815nobodyさん
03/03/12 21:54ID:???スクリプト内で取得したメールアドレスを$mailという変数に
格納し、メールのテンプレートを外部ファイルから読み込んで
送信したいのですが、ヘッダ部分にTo: "$mail"と記述していても
変数展開が行われません。
外部ファイル内にある変数は展開できないのでしょうか?
0818815
03/03/12 22:32ID:???メインルーチンの中で、$mail="mailaddr@example.com";
となっています。で、外部ファイルでは
To: $mail
From: hoge@hoge.net
Subject: hoge
<以下メール本文>
という構造です。このテンプレートファイル名が$fileに格納されているとき、
open (BODY,"$file");
@mail_body=<BODY>;
close (BODY);
としています。
0820nobodyさん
03/03/12 23:09ID:???s///はスカラのみが対象になるかと。
スマートにやるなら、HTML::Templateをお勧め。
0821815=818
03/03/12 23:27ID:???返答ありがとうございます。
最初、s///で自力でやってみたのですが、$をエスケープするのを
忘れていたり、818さんのように配列ごとs///を作用させてしまい
エラーが出っ放しだとか、いろいろありましたが、現在は以下のように
しました。
$body="@mail_body";
$body=~ s/\$mail/$mail/gs;
スマートな方法ではないですが、一応動きました。
Perlは自由度が高くてうれしいのですが、反面そのおかげで、
結構悩んでしまいますね。。。
0822nobodyさん
03/03/13 00:54ID:???もうちょっと基礎(コンテキスト、リテラル)から勉強せい
$body="@mail_body";とかかなりむちゃくちゃ(わかってあえてやってるならいいけど)
0823nobodyさん
03/03/13 12:33ID:Am3iEG5gopen FI, 外部ファイル;
foreach(<FI>) {
s/%_(\w+)_%/${$1}/eg;
$mail_txt .= $_;
}
close FI;
で、どだろう。
0824nobodyさん
03/03/13 15:56ID:???タイトル($sub)をhtmlに書き出す時だけ
**文字以上だったら2バイト切って、"…"を付ける
ってことをやりたいんですが
どこにどう付け加えればいいでしょうか?
ご教授お願いします。
0825nobodyさん
03/03/13 16:23ID:???if ( length ( $sub ) >= ** ) {
$sub = substr ( $sub, 0, length ( $sub ) - 2 ) . '…';
}
** は文字数ではなくバイトで指定
0827nobodyさん
03/03/13 16:34ID:???0829山崎渉
03/03/13 16:55ID:???0830824
03/03/13 17:07ID:???タイトルは半角で書く予定なので文字化けは大丈夫です。
>>825
どこに記述すればいいんでしょうか?
投稿処理の時点で$subではなくsubに置き換えて…無理ですね。
0832nobodyさん
03/03/13 21:45ID:PyTQVFy/$bbb = '123';
$ccc = '456';
・
・
・
$datafile = "ddd.txt";
open (dataf,">>$datafile");
flock(dataf,2);
・
・
・
print dataf "〜$aaa,$bbb,$ccc〜\n";
・
・
・
close (dataf);
というスクリプトを作りました。(abc.cgiとします)
このスクリプトを実行させる際に、modeにabcdeを与え、
テキストファイルに「abcde,123,456」と書かせたいのですが、
http://www.hogehoge.com/abc.cgi?mode=abcde
という呼び出し方じゃダメなのでしょうか?
どうしても「,123,456」と書かれてしまうんです。
どこがいけないのでしょう?
0833nobodyさん
03/03/13 21:54ID:???フォームのデータをエンコして%FORMに入れる処理(またはそれに相当する
サブルーチン等の呼び出し)はもちろんやってるよね?
0834833
03/03/13 21:55ID:???逝け>俺
0836nobodyさん
03/03/13 22:05ID:???みんなはこれで満足してますか?
特に、何かの要素の値(?) <a href="(ここ)"></a>に何かを入れるとき、テンプレート
が、ちゃんとしたHTMLじゃなくなるのが痛い。
で、CGI::FastTemplateっていうかっこいいやつを発見したんだけど、使ってる人はいますか?
0838832
03/03/13 22:57ID:???デコードもやってないし、$FORM{'mode'}にも値を代入してないという、
初歩的な問題でした。
お騒がせしました。
0839nobodyさん
03/03/13 23:48ID:???亀ですが漏れはこうやってます
最後の出力のときに使って
open TMPL, "<$file";
while(<TMPL>){
s/\$([_\w]+)/${$1}/eg;
(HTMLエンコード処理)
print;
}
close TMPL;
0840nobodyさん
03/03/14 01:12ID:???使ってみたけど、ちょっと扱いづらいね。
単機能化されているみたいだから、
HTML::Templateより速くなるみたいだけど。
0841nobodyさん
03/03/14 02:29ID:???かなりの時間がかかってしまいます。
通常、実装するとしたらこれで大丈夫なのでしょうか?
my @port = ( 80, 8000, 8080, 8888 );
my $remote = $ENV{"REMOTE_ADDR"};
my $iaddr = inet_aton($remote)or die "Unknown host : $remote";
my $proto = getprotobyname('tcp');
socket (SOCK, AF_INET, SOCK_STREAM, $proto) or return 0;
foreach my $port ( @port )
{
my $paddr = sockaddr_in($port, $iaddr) or return 0;
if (connect(SOCK, $paddr))
{
return 1;
}
}
return 0;
0843nobodyさん
03/03/14 12:10ID:???バッククウォートで
`コマンド $xxx`
↑このようにやると危険なので
system "コマンド","引数"
↑こんな感じでやりたいのですが
systemを使ってリスト@_に格納する事はできないんでしょうか。
できないのであればどういう方法が一番bestでしょう?
汚染チェックはやりますが、少しでも危険な要素を取り除きたいので・・。
0844nobodyさん
03/03/14 12:27ID:???system関数だけでは無理だと思う。
俺ならシェルスクリプトを作るかな。
で、必要な引数のほかにファイル名を引数にとって
そのファイルに全てを出力させる。
perl側からは、systemで呼んだ後にそのファイルを
読みに行けばいい。
windows環境ならバッチファイルでもいいかと。
0845nobodyさん
03/03/14 15:26ID:???汚染チェックをしっかりやっていれば
open FOO, join(' ', $cmd, @arg, '|') or error;
@_ = <FOO>;
でいい気がする。
0846nobodyさん
03/03/14 15:48ID:???0847nobodyさん
03/03/14 17:19ID:???厨房質問なのですが、
main.cgiがあり、使用するライブラリが複数ある。
とうぜん「require」を書いてあるのはmain.cgi。
この時、ライブラリAから直接ライブラリBに含まれるサブルーチンに飛ばしてなんら問題ないんでしょうか?
なんか作ってて微妙に怖くなってきました。
とある解説サイトでライブラリとはCGIにサブルーチンが埋め込まれたのと全く同じ動きをするって書いてあったけど本当でしょうか?
メインファイルを直接経由しないライブラリ間でのやり取りって支障ないですよね?
0848843
03/03/14 20:31ID:???ありがとうございます。
ファイルに吐くのも考えましたがいちいちやっていたら大変なので・・。
汚染チェックだけに頼るのが一般的なんですかね?
perl始めて数週間なのでいまいち常識がわからなくて・・
0849nobodyさん
03/03/14 20:57ID:???open(FOO, "-|") or exec 'command', $param;
print <FOO>; # 何か処理
close(FOO);
perldoc perlsec参照。
Perlクックブックレシピ19.6に詳しい方法が載ってます。
0850nobodyさん
03/03/14 21:00ID:???これが常識
$pid = open(PIPE, '-|');
die unless(defined($pid));
if ($pid) {
local $/ = '';
@_=<PIPE>;
} elsif ($pid) {
exec 'command', 'arg';
}
0852850
03/03/14 21:47ID:???>>848
これが常識
$pid = open(PIPE, '-|');
die unless(defined($pid));
if ($pid) {
local $/ = '';
@_=<PIPE>;
} else {
exec 'command', 'arg';
}
0853nobodyさん
03/03/14 22:21ID:???# X,Y,Zは数字。Xには0〜3、Yには0〜4、Zには0〜3が入ります。
という文字列を
S● B●●●● O●●
# ●の数はそれぞれX,Y,Zの数値。0の場合は●はなし。
に変換したいのですが
$test = "[c222]";
if ( $test =~ m/\[c([0-3])([0-4])([0-3])\]/i ){
$count ="S"."●" x $1." B"."●" x $2." O"."●" x $3;
$test =~ s/\[c([0-3])([0-4])([0-3])\]/$count/i;
}
ない知恵絞って上記のようなものを書いて見ました。
もっとよい方法がありましたら教えてください。
あと $test に [cXYZ] が複数あった場合、すべて変換にするには
if の代わりに while を使う方法になりますか?
0854nobodyさん
03/03/14 22:34ID:???0855853
03/03/14 22:46ID:???漏れは何をまわりくどいことをやってたんだ。
s/\[c([0-3])([0-4])([0-3])\]/S●x$1 B●x$2 O●x$3/
最初こんな感じでやってみて無理だったので、上のになりました(^^;
勉強になりました。ありがとうございます。
0856841
03/03/15 00:24ID:???こちらのスクリプトを改造したのですが、一応
オープンとクローズは遅いながらも判別できました。
#!/usr/local/bin/perl -w
use strict;
use sigtrap;
use Socket;
my ($remote, $port, $iaddr, $paddr, $proto);
$remote = $ARGV[0] || "127.0.0.1";
$port = $ARGV[1] || 0;
print "REMOTE : $remote\n";
print "PORT : $port\n";
$iaddr = inet_aton($remote)or die "Unknown host : $remote";
$proto = getprotobyname('tcp');
socket (SOCK, AF_INET, SOCK_STREAM, $proto) or die "socket : $!";
while ($port < 65536) {
$paddr = sockaddr_in($port, $iaddr) or die "$!";
if (connect(SOCK, $paddr)) {
print "PORT : $port OPEN\n";
socket (SOCK, AF_INET, SOCK_STREAM, $proto)or die "socket: $!";
}
else {
print "PORT : $port CLOSE\n";
}
$port++;
}
0857nobodyさん
03/03/15 00:57ID:???>my $remote = $ENV{"REMOTE_ADDR"};
>my $iaddr = inet_aton($remote)or die "Unknown host : $remote";
inet_atonはホスト名をIPアドレスに変換でしょ。
無意味な正引きするより$ENV{"REMOTE_ADDR"}をpackしたほうが
早いんじゃないの?
0858nobodyさん
03/03/15 01:04ID:???しかも65536って、あーた。
0859nobodyさん
03/03/15 01:34ID:???pooアプレットの方は問題なく動いたのですが、しぃアプレットの方は
画像が2重に投稿され投稿失敗のメッセージが表示されてしまいました。
それまで普通のcgi-binフォルダではどちらも正常に動作していたので
多分ページに挿入される広告が悪さをしてるんじゃないかとは思うんですが
どう直せばいいのか私にはサッパリわかりません。
どなたかわかる人がいたら教えてください。お願いします。
ちなみに今まではこのスクリプトを使わせてもらってました。
ttp://mrdc.hp.infoseek.co.jp/compati.zip
0860859
03/03/15 01:40ID:3fqyLgHG今ダウンロードできるバージョンはもうpooをサポートしてないので、、
0861841,856
03/03/15 01:41ID:???確かにその通りでした。削っているうちにちんぷんかんぷんになっていたようです。
有難うございました。
>>858
アホな目的に使うつもりはないので65536はさすがにやっていません(^^;
0862nobodyさん
03/03/15 02:22ID:???依然として非常に遅いのですが、2chなどのプロキシ弾きはCでこのようにやっているものなのでしょうか?
my @port = ( 8000, 8080, 8888 );
$ENV{"REMOTE_ADDR"} =~ /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
my $iaddr = pack("C4", $1, $2, $3, $4);
my $proto = getprotobyname('tcp');
socket(SOCK, AF_INET, SOCK_STREAM, $proto) or return 0;
foreach my $port ( @port )
{
my $paddr = sockaddr_in($port, $iaddr) or return 0;
return 1 if(connect(SOCK, $paddr));
}
return 0;
0863nobodyさん
03/03/15 02:28ID:???0864nobodyさん
03/03/15 02:29ID:???0865Name_Not_Found
03/03/15 04:55ID:???http://www.kent-web.com/bbs/fantasy.html?
に、”タイトル”を入力する項目を追加したいのですが
いざやってみたら、上手くいきませんでした。
この場合、どこをどういじればいいのでしょうか?
0867nobodyさん
03/03/15 09:19ID:Uli+0qKe/cgi-binではhtml、jpgを閲覧できません。
現在のフォルダ
/www/
html/
cgi-bin/
これを/www/html/ 配下すべてでperlもhtmlも動作できるようにしたいのですが、
どうすればいいんでしょうか?
0868nobodyさん
03/03/15 10:23ID:???apacheの設定を弄るか.htaccessで設定を変更する必要があるのだが権限あるの?
キーワードはScriptAlias,ExecCGI。
スレ違いになるので後は自分で調べてください
0870nobodyさん
03/03/15 10:27ID:Uli+0qKeスレ違いですか。
http://x68000.startshop.co.jp/~68user/webcgi/server-config.html
の通り、
httpd.confを弄ってみたんですが、うまくいかなかったんで。
当然root権限はあります
0871nobodyさん
03/03/15 10:36ID:???のコメントは外した?
ドキュメントルートを移動させてれば、そっちもOptionsの設定がいるよ。
つか、サーバルートの設定を変えるってのはヤバイ。
これ以上はすれ(略。
0872867
03/03/15 10:55ID:???もっと勉強が必要か。
CGI設置フォルダの下にhtmlを置くやつが使いたかったから・・・。
0873nobodyさん
03/03/15 12:12ID:???>当然root権限はあります
こんなやつがroot権限を持つなんて・・・、しかも当然だって・・・(w
0874867
03/03/15 12:35ID:???となりのPC(ry
root権限なかったら、こういう質問しませんよ。
共用なら、たいていどこの階層でもperl使えるし、
cgi-bin限定でもhtmlや画像、映像も置ける。
ISPのサーバーなら、できないならできないと初めから書いてるしね。
ま、踏み台にされないように頑張りますw
0875867
03/03/15 12:37ID:???0876nobodyさん
03/03/15 12:40ID:???っていっても期待はできないな。気持ちで防げるものではないから。あはは・・
0877867
03/03/15 13:55ID:???そんなに難しいことじゃなかったらしい。
876にバカにされるのもいさ仕方ないのかも。
サーバーの電源落として寝ますわ。
0878nobodyさん
03/03/15 14:07ID:???0879nobodyさん
03/03/15 17:45ID:5hlN9xGBこのような処理で万が一タイムアウトになった場合、次の処理に移り
たいのですが、実行しっぱなしになってしまいます。
通常どういった処理を行うのが良いのでしょうか。
0880nobodyさん
03/03/15 17:51ID:???ありがとうございました。
ただ私の環境はActivePerl-5.6.1.635なので
どうもできないようです。(forkできないから?)
execも引数を2個使うとなぜか機能しません。
○exec "コマンド 引数"
×exec "コマンド","引数"
もうさっぱりわかりません。
open FOO,"コマンド 引数|"
これだとFOOに結果が格納されたんですが
引数が外部の場合危ないですよね。
0881nobodyさん
03/03/15 18:45ID:???漏れって「引数」をずっと「いんすう」って読んでたよ。
0882845
03/03/15 19:28ID:???alarmでどうよ。
>>880
> 引数が外部の場合危ないですよね。
だから「チェックをしっかり」と書いてるんだけど…。
"$cmd $arg"と書かずに$cmd,@argと書いた意図を汲んでほしいな。
そもそも使いたいコマンドは何?引数はそんなに複雑なの?
引数が2つ以上のexecは引数が1つの時と挙動が変わるし、
第一システムコール使う関数は9x系とNT系で実装具合が違う。
駱駝本なりperldoc -f execなり読んでね。
0883nobodyさん
03/03/15 20:20ID:???私も昔そう呼んでたよ。気にするな。
0885nobodyさん
03/03/15 21:18ID:???汚染チェックだけしっかりやっとけ
>>882
$cmd,@argでも' 'でjoinしている時点で
意図を汲みようがないと思われ
0886nobodyさん
03/03/15 21:42ID:???$SIG{'ALRM'} = sub{ die 'timeout' };
eval{
alarm($timeout); # $timeout秒
$tmp = `/usr/bin/whois -h $server $name.$domain |grep -i '$msg'`;
alarm(0);
};
if ($@){
alarm(0);
($@ =~ /timeout/) or die;
# timeout!
}
# windowsではalarmが使えません。
>>880
windowsでは "-|"が使えません。
0887nobodyさん
03/03/15 22:26ID:5hlN9xGBどうもありがとうございます。
うまくいきました!
0888nobodyさん
03/03/16 04:48ID:???文字列いれてやればいいんだけどPOSTはどうやればいいですか?
途中まで書いて調べてみたんだけど。
$ENV{'SCRIPT_NAME'}="/cgi-bin/test.cgi";
$ENV{'REQUEST_METHOD'}="POST";
$ENV{'CONTENT_LENGTH'}="24";
open FH,"-l", or exec "perl","test2.cgi";
0889Name_Not_Found
03/03/16 05:06ID:???LWP(libwww)使うと幸せになれるかと。
0891890
03/03/16 11:19ID:???できました。ありがとうございます。
一応こんな風になりました。ってコピペですが。
use HTTP::Request::Common qw(POST);
use LWP::UserAgent;
$ua = LWP::UserAgent->new;
my $req = POST 'http://www.xxx/yyy.cgi',
[ namae => "bbb",
name2 => "aaaa" ];
@aaa= split ( /<BR>/,$ua->request($req)->as_string);
0892nobodyさん
03/03/16 13:18ID:???0893nobodyさん
03/03/16 20:10ID:HMSF0mo0$trip = 1;
#トリップ変換文字列
$tripsalt = XX;
#---------------------#
# トリップ #
#---------------------#
sub tripping {
if ($trip == 0) {
}
if ($trip == 1) {
# トリップ機能有効なら◆は◇に置き換える
$name =~ s/◆/◇/;
if ($name =~ /(#|#)(.*)$/) {
$string = crypt("$2", $tripsalt);
$tripstr = substr($string,2,8);
$name =~ s/(#|#)(.*)$/◆$tripstr/;
}
}
掲示板にトリップ機能を付けようと思っています。
上の設定でon/offを切り替えれるように設定しようと思っているのですが、
これでいいのでしょうか?
0895893
03/03/16 20:15ID:HMSF0mo0動いてくれませんでした。
有効にしたはずだけど無効でした。
0896nobodyさん
03/03/16 20:15ID:MtdvS7v9「あほ」 が含まれてるだとか、判断したいんです。
0897nobodyさん
03/03/16 20:18ID:???どう動かなかったのか?
$tripsalt = XX;
一応クオートで囲って下さいな。
if ($trip == 0) {
}
いらないです。
後、スコープという物をもうちょっと意識した方が良いかと思います。
0898893
03/03/16 20:28ID:HMSF0mo0レスありがとうございます。
動かなかったというのは無効設定というか、
加える前と何も変わりませんでした。
on off機能を無くしてスクリプトに直接埋め込んだ(こういう表現で良いのでしょうか?)
場合、有効になりました。
>>$tripsalt = XX;
>>一応クオートで囲って下さいな。
これですが直接埋め込んだときは囲わなくて動いたので大丈夫だったのですが、
やはり囲った方がいいのでしょうか?
直接埋め込んだときは書き込み処理の前に
$name =~ s/◆/◇/;
if ($name =~ /(#|#)(.*)$/) {
$string = crypt("$2", $tripsalt);
$tripstr = substr($string,2,8);
$name =~ s/(#|#)(.*)$/◆$tripstr/;
}
を埋め込みました。
まだクッキー部分の始末もしないといけないし、まだまだ時間がかかりそうです。
0899nobodyさん
03/03/16 21:48ID:???HTMLじゃないんだから、文字列のクオートは省略しちゃいかんよ。
「文字列ではない何か」とみなされることがある。
プログラムの別の場所で$tripという変数を使ってたりしない?
>>897の言う「スコープ」を意識しないと、こういう単純ミスをしがちなので。
0901893
03/03/16 22:10ID:HMSF0mo0レスありがとうございます。
試行錯誤でなんとか出来ました。
あとはクッキーにトリップ変換後の物が記録されるのを修正です。
Perlは最近自分で勉強しだしたので、スコープが何か全く分かりません。
勉強してきます。
レス付けてくださった方ありがとうございました。
0902nobodyさん
03/03/16 22:18ID:???0903nobodyさん
03/03/16 22:24ID:04Nbdlpl今、試験的に2008年、2ちゃんねるUNIX板で開発された『タイムアクセス』を使って
2003年3月16日の「2ちゃんねる」に書き込んでいます。
2008年から(´∀` )オマエモナー
http://comic2.2ch.net/test/read.cgi/ymag/1047479574/
0904nobodyさん
03/03/16 22:40ID:WBb98oow↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
http://www.pink-angel.jp/betu/linkvp2/linkvp.html
0905nobodyさん
03/03/16 22:57ID:???川o・-・)ノ <先生!こんなのがありました!
__/ / /
\(_ノ ̄ ̄ ̄\
||ヽ|| ̄ ̄ ̄ ̄||
...|| ̄ ̄ ̄ ̄||
http://saitama.gasuki.com/shinagawa/
0906nobodyさん
03/03/17 06:24ID:???while (<FH>) {
だと 内容が $_ に格納されますが
}
foreach my $x (@x) {
のように、初期で変数に格納する方法はないでしょうか?
}
説明がへたくそですみません・・。
while (<FH>) {
$x=$_;
とするしかないのでしょうか・・
}
0908nobodyさん
03/03/17 07:35ID:???有難うございますー
一度、($x = <FH>) でやったところエラーが出たので
出来ないのかと思い込んでいたら、 myが抜けていたのですね・・。Strictで書いていたもので;
これで次に進めそうです(^^
0909896
03/03/17 08:08ID:???わかる人おしえてください
Perlでフォームの内容を判断させるにはどういう命令を使ったらいいんでしょうか。
「あほ」 が含まれてるだとか、判断したいんです。
0911nobodyさん
03/03/17 09:49ID:???if ($hoge =~ /あほ/) {print "含まれている";}
0913nobodyさん
03/03/17 12:18ID:???↑訳して下さい。
というか自分で書いといて
どういう順番で読むか忘れた…(久々ゆえ
0914真の896
03/03/17 16:35ID:3tcTX76s>>911
ご教授ありがとうございました。
>>912
質問したらココに誘導されたので、もう一度書きました。
0915nobodyさん
03/03/17 16:43ID:???逆引きしたいのなら
$addr = $ENV{'REMOTE_ADDR'};
$host = gethostbyaddr(pack('c4',split(/\./, $addr)), 2) || $addr;
これでいいんじゃないの?
逆引きできたら$hostにはその結果||出来なかったら$addrを挿入;
0917nobodyさん
03/03/17 20:00ID:???$hs = gethostbyaddr(pack('C4',split(/\./,$addr)),2);
$hs ||= $addr if (!($hs=$ENV{'REMOTE_HOST'}) || ($hs eq $addr));
$hs = gethostbyaddr(pack('C4',split(/\./,$addr)),2) || $ENV{'REMOTE_HOST'} || $addr;
と等価…のはず。
0918913
03/03/17 20:27ID:???レスthx。
gethostbyaddrは負荷になるとか聞いた覚えがあったんで、
$ENV{'REMOTE_HOST'}が空だった時のみにgethostbyaddr、とかいうのを
一行で書きたかった…んだと思ふ。
0920915
03/03/17 20:58ID:???まぁApacheだとすると
HostnameLookups off
アクセスは逆引きしない
apacheのログはIP(***.***.***.***)
$ENV{'REMOTE_HOST'}は存在しない
HostnameLookups on
アクセスは逆引きする
apacheのログはHOST形式(****.***.ne.jp)
$ENV{'REMOTE_HOST'}は逆引きした結果
HostnameLookups double
on の結果を更に正引きして一致するか確かめる
一致しなければIP形式になる。いわゆるDNS二度引き
$ENV{'REMOTE_HOST'}は逆引きしたのが正引きしたのと同じなら存在する
稀に偽の逆引きアドレスいれるサーバがあって
逆引きすると日本語で萌え萌えとかでるいう香具師もいる
ちなみにgethostbyaddr関数はdoubleと同等ね
普通はApacheの逆引きはしない様にして
ホスト情報が欲しいときだけgethostbyaddr関数などを使うのが
これが一番サーバにやさしいかと。
0921nobodyさん
03/03/17 21:15ID:???gethostbyaddrが動作しないなら、
ホスト名取得は不可能でしょうか?
必要分だけ今はnslookup(泣)
まぁ使ってるうちに結構頭で逆引きできるようになりました(死)
0922915
03/03/17 21:26ID:???gethostbyaddrが動作しないってどういうこったい?
まぁ自鯖だと仮定すると
DNSをルータのではなくISPのを指定して見るとか
0923921
03/03/17 21:40ID:???0925921
03/03/17 21:52ID:???確かに止めた方がいいように思うことも一杯あったので多分もう止めます。
REMOTE_HOSTもgethostbyaddrも使えない。
HOOPSと統合によって<!--#exec cgi="..."--> まで使え無くされて踏んだり蹴ったり。
<!--#exec cgi="..."--> と.htaccessが使えて、
REMOTE_HOSTかgethostbyaddrのどちらかが使える(普通使えるよなぁ・・・)
フリーサーバって無いかなぁ・・・
0926nobodyさん
03/03/17 21:57ID:???SSI OK
CGI OK
.htaccess NG
なら結構あると思うぞ
本格的にサイトつくりたいのなら
XREAでも借りなさい。
0927921
03/03/17 22:03ID:???そうなんですよね。
CGI、SSI可はかなりあるんですが、.htaccessまでってのは無いですよね。
金払ってまでならまぁ無くても仕方ないかなって思ってますけど。
ところでXREAって今一般向け止まってません?
0928nobodyさん
03/03/17 22:09ID:???ドメイン適当に1150円でとれば無条件で使えたと思ったが
さらに2400円払えば広告なくなって
破格だと思うが適度に安定してるし
ドメイン無し有料って出来たかな忘れたわ。
0929918
03/03/17 22:18ID:???なにしろ忘れるくらい独学(perl関連のサイトをググってるだけ)だもんで。
勘違い以前に無知に等しかったり。
理解できたかどうかはともかく説明多謝。
0930sage
03/03/18 00:22ID:I8ME4rq8SetCookie {
$CookieName = hello';
$ExpireDate = '200108270900';
}
と
#!/usr/bin/perl
GetCookie {
unless ($ENV{'HTTP_COOKIE'} = hello) {
Print "Location: http://hoge.com/chuui/cookie.html\n\n";
}
で直リンクを低減させようと思案しています。
ですが、第一にクッキーがセットされません。
どこがどういう風に変なのでしょうか?
0931nobodyさん
03/03/18 00:27ID:???0932nobodyさん
03/03/18 00:27ID:???http://www.studyinghttp.net/rfc_ja/2616/
0934nobodyさん
03/03/18 00:28ID:???0936930
03/03/18 08:45ID:I8ME4rq8>931 演算子の使い方とか〜
そもそも演算子というのがよく分かっていません。 色々見て回って書いてみたものなので
>932
読んだのですが、理解を超えています。 だから、初心者なのですが…
>933
色々なホームページで見た限り、これで良さそうな感じで書かれてあったので、これ以上は…
>934、935
では、正しくはどういう記述を…?
0937nobodyさん
03/03/18 08:59ID:???クッキーカウンタとかもやめてほしいネ
0938nobodyさん
03/03/18 09:17ID:???クッキーの仕様についてはCGIの範疇なのでスレ違い。
だいたい、ソースのコピペしかできないようなレベルじゃ扱うのはまだ早いよ。
自分で掲示板の1つも作れるようになるころには、理解できるようになってるはず。
つうか、「Perl クッキー」とかでぐぐればけっこう解説サイトがヒットするけどな…
0939nobodyさん
03/03/18 09:33ID:jCHimkJHローカルにApache,perlがあります。CGIページで
system("xload")を実行したいですが、できません。
system("pwd")のようなコンソールアプリは動くが、xloadや
xemacsなんてのは動かないという認識でよいのでしょうか。
御回答をお願いします。
0940930、936
03/03/18 09:50ID:I8ME4rq8>そもそもいきなりクッキー埋めこもうとするのも問題じゃろな
よく意味は分からないけど、そんなもんなんですかねェ・・・
>938
>自分で掲示板の1つも作れるようになるころには、理解できるようになってるはず。
これは何となく分かるような気がします。
>「Perl クッキー」とかでぐぐればけっこう解説サイトがヒットするけどな…
確かにいっぱいヒットしましたが、殆ど紫色なんですよ。
一度は見ています。あまり分からなかったですが・・・
ともかく、皆様、色々有り難うございました。
また来るとは思いますが、少し、色々漂流してこようと思ってます。
0941bloom
03/03/18 09:51ID:aWc/tLn40942nobodyさん
03/03/18 14:20ID:???0943nobodyさん
03/03/18 14:32ID:nZAPWH8ksendmailが使えず、ちょっと悩んでるんですが、
http://wan.magical.gr.jp/txt/sendmail.htm
http://homepage2.nifty.com/ders_soft/sendmail01.html
↑これって使っても大丈夫ですか?
0945nobodyさん
03/03/18 16:35ID:???0946nobodyさん
03/03/18 16:45ID:???CGIページって何?
ま、いいや。
xload がどう動くことを期待してるわけ?
Perl より先に HTTP を学ぶことを推奨しとく。
0947nobodyさん
03/03/18 18:44ID:???斬新な発想すぎてオレにはついていけない
システム状況(?)を見たいのならmrtgてのもあるぞ。
perlより先に SNMP を学ぶことを推奨しとく。
0948nobodyさん
03/03/18 18:55ID:???Perl 初心者コーナー Part21
http://pc2.2ch.net/test/read.cgi/php/1047980851/
0949nobodyさん
03/03/19 12:44ID:???#環境変数取得
$ip = $ENV{'REMOTE_ADDR'};
$host = gethostbyaddr(pack("C4", split(/\./, $ip)), 2);
$host ||= $ENV{'REMOTE_HOST'};
$host ||= $ip;
$referer=$ENV{'HTTP_REFERER'};
$script=$ENV{'SCRIPT_NAME'};
ってのがあったんですが、$host ||= $ip;の||=ってなんですか?
多分、インクリメントやデクリメントのように略されてると思うんですが
本を読んでも見つからず、検索かけても全くヒットしてくれないのです。
アドバイス頂けたら嬉しいです。
0952nobodyさん
03/03/19 13:06ID:???えっ、次スレ立っても現行スレを消化するまではこっちを利用するってのが普通だと
思ってた。違ったのか。すいません。
いろいろ考えて
$host eq "" || $host eq "$ip"
のようなものかなとか考えてました。"perl" と "演算子"で検索してきます。ありがとうございます。
0954nobodyさん
03/03/20 13:07ID:sfBN77p8use strict;
って使ってます?
0955nobodyさん
03/03/20 13:18ID:???0956nobodyさん
03/03/20 13:20ID:???ということは
Kentみたいのじゃなくて
varsなどでグローバル変数 myなどローカル変数を
明確にやってるんでしょうか?
0957nobodyさん
03/03/20 13:33ID:???Kentみたいの、ってのがよくわからんけど。
# 何が聞きたいのかいまいち見えてこないし
0958nobodyさん
03/03/20 13:35ID:???サンクス
KENTWEB配布のやつは
use strict使ってなくて
局所的にlocal使っているんですが
ほとんどは定義もせずにグローバル変数になってます
0959nobodyさん
03/03/20 13:40ID:???0960nobodyさん
03/03/20 13:42ID:???あそこは perl4 でも動作するようにしてるから・・・。
これ以降、新規質問は新スレで
Perl 初心者コーナー Part21
http://pc2.2ch.net/test/read.cgi/php/1047980851/
0961nobodyさん
03/03/20 14:05ID:???&jcode::convert( *hoge, 'sjis' );
こうして変数をmy宣言してしまうとコンバートされません。
localじゃないとダメです。なぜでしょうか?
localだとuse strictでエラーが出ますし。
0964nobodyさん
03/03/21 04:46ID:???ありませんか?
0965nobodyさん
03/03/21 05:13ID:???0966nobodyさん
03/03/21 09:04ID:???use Time::Local;
print timelocal($sec,$min,$hour,$day,$mon,$year);
0967nobodyさん
03/03/21 16:26ID:6r+JTGmvある行の途中にAAAという単語があったら
それ以降の文字をすべて消すにはどうすればよいでしょうか?
ex. XXX AAA YYY
上のAAA YYY(ランダムな文字列、文字数)を消したいのレス。
0968nobodyさん
03/03/21 16:39ID:pOguTMzcs/AAA.+//
0969967
03/03/21 18:14ID:6r+JTGmvたすかりました
ドーモデスm(_)m
0970名無しさん@Meadow
03/03/22 18:00ID:???あと31!
0971nobodyさん
03/03/22 19:09ID:???0972nobodyさん
03/03/22 22:45ID:blYpQKgH970げと
9 7 0 ゲ ト
9 7 0 げ と
0973nobodyさん
03/03/22 22:49ID:89cBTolJ0974somebody
03/03/23 14:56ID:???何ができるのですか?どうやってつかうのですか?
0978nobodyさん
03/03/24 12:51ID:???何ができるのですか? どうやってつかうのですか?
0979nobodyさん
03/03/24 15:22ID:???0980nobodyさん
03/03/24 15:22ID:???> cgiファイルって実行ファイルですよね?
そんなことはありません
> 何ができるのですか? どうやってつかうのですか?
一概には言えません
0982nobodyさん
03/03/24 18:25ID:???0983nobodyさん
03/03/24 23:13ID:???まあ、皮肉ボケをかますのもそれくらいにしとこうや。
最初の質問者の>>974は見てないのか通じてないのか通じてて無視してんのか知らないけど。
阿呆な質問には阿呆な回答がつくのが関の山だって言う、好例だな。
0984nobodyさん
03/03/24 23:56ID:???スクリプト?mode=check
みたいのを掲示板に作っているのですが、
その中で属性のチェックの中で755のチェックはどう指定sすればいいのでしょうか?
777の場合は
if (-r $script && -w $script && -x $script) {
print "<LI>スクリプトパーミッション:OK\n";
} else {
print "<LI>スクリプトパーミッション:NG → $script\n";
}
666は && -x $scriptを削除すればいいのですが
三つ数字が並んでいない755はどうすればいいのか分かりません。
よろしくお願いします。
0986nobodyさん
03/03/25 00:13ID:???http://pc2.2ch.net/test/read.cgi/php/1047980851/
0989984 ◆R6848mhTeI
03/03/25 00:29ID:???if ((($mode) = (stat($script)) == 755) {
みたいにですか?
0990984 ◆R6848mhTeI
03/03/25 00:32ID:???どうもありがとうございました
≦(._.)≧ ペコ
0991nobodyさん
03/03/25 00:39ID:???0992984 ◆R6848mhTeI
03/03/25 00:48ID:???結局こうしました
if ((($mode) = stat($file)) = 755) { print "<LI>表\示ファイルのパーミッション:OK\n"; }
else { print "<LI>表\示ファイルのパーミッション:NG\n"; }
0993984 ◆R6848mhTeI
03/03/25 00:50ID:???0994nobodyさん
03/03/25 00:57ID:???statは配列で13個の値を返す
3番目( [2] )にパーミッションも含まれている
値を見ればわかるがそのままでは直接使えない
8進数にして下3桁が一般的にいう755などのようなパーミッション
これは定石だからこの機会に覚えるといい
0995nobodyさん
03/03/25 02:21ID:ouvjm9qN0996nobodyさん
03/03/25 04:27ID:???0997nobodyさん
03/03/25 04:28ID:???0998nobodyさん
03/03/25 04:31ID:???0999nobodyさん
03/03/25 04:33ID:???1000nobodyさん
03/03/25 04:35ID:???Perl 初心者コーナー Part21
http://pc2.2ch.net/test/read.cgi/php/1047980851/
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。