【Perl】初心者コーナー Part13
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
02/05/30 13:06ID:R2kt1mTx1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
CGIの質問は【CGIだけど、なんか質問ある? part 6】
http://pc.2ch.net/test/read.cgi/php/1019561283/
参考書籍の話題は【【Perl,CGI】参考書籍 第2版】
http://pc.2ch.net/test/read.cgi/php/988809842/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般】
http://pc.2ch.net/test/read.cgi/php/991313362/
スクリプトの改造依頼は 【スクリプト改造工房 Part4】
http://pc.2ch.net/test/read.cgi/php/1012839651/
過去ログ、その他の役立ち情報は>>2-10あたりを見よう。
0797nobodyさん
02/07/13 22:35ID:xEQW3A4yA :22
B :31
C :13
上記のような二次配列を連想配列をつかって作成したのですが、
これをソートするのはどのようにすればいいのでしょう・・?
知人の考えで、年齢をハッシュのキーにしてソートすると言う案があったのですが、
同じ年齢の場合には、上書きされてしまうのでその案は使えませんでした。
どのようにすればいいでしょう・・?
0798nobodyさん
02/07/13 22:49ID:???print qq($_ : $hash{$_}\n);
}
0799nobodyさん
02/07/13 22:49ID:???適宜修正して。
0800nobodyさん
02/07/13 23:28ID:???今、ラクダ本で、コンパイルについて見ています。
しかし、use Protect ;とファイルにはあるのですが、
この Protectの部分について書かれていません。
use Protect ; は、どうやればできるのでしょうか。
ラクダ本のどこだかわからないが、
それは「自分でプロテクトモジュールを作成してね」という意味だと思う。
とりあえずそれを実装するには、
・Perlに構文の理解
・CPANのFilterライブラリの使用法
・暗号化ライブラリの使用法
が最低限必要だと思うよ。
0802お酢カル ◆myMazZ7Y
02/07/14 01:07ID:???説明できないオナニー野郎は(・∀・)ウセロ!!
まぁ>>800は馬鹿だからこれでいいかと
------------encode-------------------
while(<>){
$n= unpack "h*", "$_";
$n=~y/123456789fedcba/abcdef987654321/;
$e= pack "h*" , "$n";
print $e;
}
0803nobodyさん
02/07/14 01:08ID:???googleで、検索していたのですが、use MD5; というのは、
見つけました。
私には、まだ敷居が高そうです。
e-shoppyというSHOPスクリプトの試用版にバイナリエディタを
使うようにあったので、試用版って、こんな感じで配布しているんだと
思い、気になるので調べていました。
スクリプトを売る前に、試用版として、こんな感じで配布すれば、
ソースがプロテクトできるので、有用だなと興味を持ちました。
0804nobodyさん
02/07/14 02:43ID:vNhQYRiQ今、perlでBBSを書いているのですが、
大体できて知り合いの所に入れてもらったりして
動作確認しました。
色んな環境の人のところで正しく動作したのですが、
(perlのバージョンが5.5or5.6,実行権限がnobody,オーナー等)
一人だけ動作がおかしい人がいるんです。
何がおかしいのか調べてみたら、
サブルーチンでseekさせてメインのルーチンに戻ってくると
seekさせたのが無かったことに?なってるんです。
サブルーチンでどんなにseekさせても
メインのルーチンで続行するとなぜか次の一行は空行、
その次の一行はファイルの一行目を読み込みます。
そのおかしくなる人の環境は
OS NAME = freebsd
PROCESS ID = 5854
PERL EXECUTABLE = /usr/local/bin/perl
PERL VERSION = 5.00503
ってな感じです。権限はオーナー権限です。
他の、perlのバージョンが5.5の人のところではちゃんと動いてます。
この人の環境になにか特別なものがあるとは思えないので、、、
ただ、他の人はみんなlinuxなんですけどそれって関係ありますか?
コーディングの問題かとも思っていろいろ試行錯誤してるのですけど
もう分からないんです・・・
0805nobodyさん
02/07/14 02:51ID:CbCEC3kHソースもどこかにアップしてみてよ。
0806nobodyさん
02/07/14 03:15ID:???UPしてみました。なにぶん、perlでの初めてまともな作成物なので
見るのも辛いところもあると思いますが、よろしくお願いします。
ttp://naha.cool.ne.jp/b3b3b/styx.zip
0808nobodyさん
02/07/14 03:25ID:???もうしわけないです;;
0809nobodyさん
02/07/14 03:42ID:CbCEC3kHsysread関数と他の方法による読み込みの混用が存在しています。
これは、わたしの手元のラクダ本に書いてあることですが、これらの混用は、
あなたがウィザード級の腕前の持ち主でないかぎり推奨できないとあります。
0810nobodyさん
02/07/14 04:04ID:???どっかのサイトで行数を数える一番効率の良い方法ってのが出ていまして、
sysread使ってましたので、行数を数えるのにsysread使ってます。
sysread使わないで書き直してもみます。
いまおかしくなってる環境の当人に連絡が取れないので
今すぐには無理だと思いますが。
ただ、殆どの人のとこでは正常に動いていて
その人のとこでだけ動かないっていうのが気になります。
環境に依存するような問題があるのでしょうか?
(ファイルを扱う関数の、実装の違いとか)
らくだ本欲しいですけど
貧乏なので本屋で眺めるだけです;;
perl は立ち読みと WEB と皆さんの素晴らしい作品で勉強中です。
0811nobodyさん
02/07/14 04:15ID:CbCEC3kH恐らくではありますが、FreeBSD環境では sysread関数と他の読み込みの混用の
面倒をみてくれないということでしょう。
sysread関数というのは、直接システムコールを呼び出しているので混用した
場合に処理に見合った動きが期待できなっかったりするようです。
まぁ、単純に sysread関数を read関数に書きかえるだけで恐らくうまくいくで
しょう。
それから、効率よく行数を数えるのなら以下をやってみてはどうでしょう。
while (<FILEHANDLE>){}
print "全行数は: $.\n";
close(FILEHANDLE);
0812nobodyさん
02/07/14 04:24ID:???最初はこういう方法とっていたのですが、速度が良くないようです。
ベンチとりまくってみましたが、
バッファにsysreadで読んでtrするほうが圧倒的に早かったです。
1000レスとかになるログだともろに差が出てきたので、、、
read で書き直して、ベンチマークと相談して
当人にためさせてみますね。
あと、問題の出ている個所の本元は、&std::pick だと思います。
ここでもsysreadで行数数えているので、ご指摘の問題があるのだと思います。
でもおかしいんですよね、、、
このpickルーチンだけ抜き出した簡単なテスト用cgi作って
彼にためさせたらちゃんと動作してたんですよね。
(任意の行にseekちゃんとしてる)
パッケージとか絡むとなんか違うのかなぁ〜
0813nobodyさん
02/07/14 04:29ID:CbCEC3kH速度の差なんて人間の感覚では気づかない程度のミリ秒単位だからそう
気にすることないと思います。 もしこれが遅いのならC言語などで書く
ようにすることを考えるべきです。
0814nobodyさん
02/07/14 04:44ID:???0.数秒の差だったです・・・
テストケースのログで、
(BBSのトップに○○スレのそれぞれ最新の○件を表示みたいな)
そのスレが1000レスとかあると、一行目からたとえば950行目を探すのに
while (<FILEHANDLE>)式とtr式で物凄い差が出ました。
それが20スレとかあるともう体感できそうなくらいの差だったので。
ベンチマーク用のルーチン作って2000行のログのうち**行目をサーチする、
というのを1000回まわすのを自宅でやってみたところ
tr式の方が15倍くらい早くて、
従来の方法だと固まったんじゃないかってくらい遅かったです(もう一分位;;)
BBSで使う場合1000回も回さないですけど
それでも標準的表示数で0.15秒くらいの差が出てました。
私はもともと最初にプログラムを触った時
みんなマシンパワーがなくてなんでも高速化高速化があたりまえの頃だったので
なんか貧乏癖がついてるのかもしれません。
perlで久しぶりにプログラミングってのを再開してます。
もうちょっとおおらかにプログラミングしてみます。
いろいろ有難うございました。
0815nobodyさん
02/07/14 04:48ID:CbCEC3kH0.1秒でも速くしたいのなら別ファイルに常に行数のみを保存しておく
などの方法もありますが、そこまでしてもPerlで速く処理させたい?
0816nobodyさん
02/07/14 05:02ID:???でも任意の行数にシークするってのはできないですよね。
(関数としてはない)ユーザーが工夫しないと。
書き込みがあったとき、削除のとき、だけは再度行数を取得してます。
もし、別ファイルが不慮の事故でいかれてたら一生ずれたまんまになるので。
perlでそこまでして、とは思ってないです。
生意気そうなこと言って申し訳ありません。
でも出来るだけ早く出来るならそのほうがいいかな〜ってだけです。
c-boardのソースとかみたらなんかすごくてブルーなっちゃって
高速化しないとだれも相手にしてくれないかな、って囚われていました。
早くしなきゃ、早くしなきゃって。
でも殆どの人はそんなこと気にしてないんですよね。
それと単純にベンチで段々確実に改良ごとに早くなってくのが
楽しかった、ってのもあります(笑
まだまだ勉強中の身ですので努力して良い物作れるようにがんばります〜
0817高速化遊戯
02/07/14 05:46ID:Iun5VHk7というはダメですかね?
任意の行に飛ぶ時はこっちをループでまわして
得られたファイルポインタの所にseek、と。
余計なデータが無い分、ループまわすのも早そうだし。
試してないからなんとも言えないけど。
0818nobodyさん
02/07/14 12:11ID:???大して技術も基礎もなってないのに
しかもperlで高速化とか言ってるのは
よく思われないみたいなので、もう言うのやめようと思ったのですが
高速化遊戯さんがレス下さってるので、書きます。
別ファイルだと、結局そのファイルを何らかの形で取り込まないといけないです。
while (<FILEHANDLE>){}が遅いのってベンチとってないから
断言できないですけど、ファイルの大きさうんぬんより
perlの持ってるファイルから一行取り出すための作業が
遅いんじゃないかと思ってます。(憶測で物言ってすみません)
それだったら、もとのファイルの各行にインデックスつけた
データ形式にして、
もしそれが数千行とかあるファイルだったらですけど
いくらかずつseekさせて、インデックスを拾い読みして
目次見たいの作って、任意の行を拾うときは、
その目次見て近そうなとこから探すほうがいいかと思いました。
つづく、、
0819nobodyさん
02/07/14 12:19ID:???ここみたいなBBSで、一応10000レスをリミットにしてるから
9桁(ファイルポインタ)×100 = 1KB程度がインデックスに使われてる
その代わり読み込み時の落ち込みは少ない
レス5850を読む、なら5800行目のfpを探してseek
そこから普通に行処理するだけだから。
後はファイルのお尻〜行を読むtailみたいメソッドを書いてる位。
perlで低レベルの関数使うのは面倒だから、どうしても行読み出しで
グルグルしがちだけど
工夫すれば極端なパフォーマンス低下は防げると思うよ
0820nobodyさん
02/07/14 12:22ID:???>perlの持ってるファイルから一行取り出すための作業が
>遅いんじゃないかと思ってます。(憶測で物言ってすみません)
俺もそう思う。テストした訳じゃ無いけど
sysreadでバイト読みする方がずっと早いと思うよ。
だからと言って、Cでもperlでも低レベルの関数はそれなりに
使い辛い訳で・・・
0821nobodyさん
02/07/14 12:23ID:vNhQYRiQもうログの形式を変えたくなかったのでやめました。
それにせいぜい1000行前後なので直接改行の数を数えることにしました。
それで書いたルーチンが次のようなものです。
(勉強中なのでおかしいとこあると思いますけど、、、)
sub pick {
my $fh = shift;
my $hit = shift;
my $bufsize = 4096;
my ( $per, $buf, $line, $prev );
seek( $fh, 0, 0 );
binmode $fh;
while ( sysread $fh, $buf, $bufsize ) {
$prev = $line;
$line += ( $buf =~ tr/\n// );
last if $line >= $hit;
$per++;
}
my $over = $hit - $prev;
$buf =~ /(^([^\x0D\x0A]*\x0D?\x0A?){$over})/;
seek( $fh, $per * $bufsize + length($1), 0 );
}
これでベンチとってみたらびっくりするくらい早かったです。
一行ずつかぞえるのの、15倍くらいの速さでした。
数千行あるようなファイルをいくつもまわす場合は明らかに
体感できるくらいの差がでました。
それで嬉しくて調子のって使っちゃったです・・・
でも良くないようなので、他の方法探してみます。
(FreeBSDだけなのかな?、ダメなのは)
0822nobodyさん
02/07/14 12:32ID:???最近コード書いてないんで殆ど忘れちゃったんだけど
俺も>>809さんの言うとおりだと思う
Cで速度を求めてfgetsからreadにした時に、そう言う問題に嵌った事有るよ
良く覚えて無いんだけど、結局は低レベルと高レベルの読み込み関数を
併用したのが間違いだったと思う
0823nobodyさん
02/07/14 12:38ID:vNhQYRiQうわぁ、それスマートです;;
とても勉強になります。
今作ってるのはもう固まってきちゃってるので
大きいバージョンUPの時にでもそういう手法でやってみます。
いぱーいレスつけられますもんね〜
>perlで低レベルの関数使うのは面倒だから、どうしても行読み出しで
>グルグルしがちだけど
うんうん。地が貧乏性なので、配列にごっそりとかぐるぐるとか
なんか疑問に思っちゃって。
いろんなBBSのスクリプト見たりあさったりしたんですけど
意外と、みんなぐるぐるで、グルグルでいいんかよ〜って思ってたんです。
だからこういう具体的な工夫例聞けてとてもやる気でました。
0824nobodyさん
02/07/14 12:40ID:???ログのコンバータ書いた方が後々苦労しない気もしないでもない。
これだとシステムよりの関数は一切使ってないから
つーか1000行程度ならぶん回しても問題無いんじゃない?
0825nobodyさん
02/07/14 12:41ID:???0826nobodyさん
02/07/14 12:42ID:vNhQYRiQつかめてきたのでこれから色々その線でしらべて見ようと思います。
0827nobodyさん
02/07/14 12:45ID:???〜〜する清原みたいなバカスレが再現出来ると結構嬉しいもんです(・∀・)
0828nobodyさん
02/07/14 14:31ID:ZiG6NcZV現在、赤帽7.2の上にRPMとして乗っかっているPerlのバージョンは、5.6なのですが、
ある既製のPerlスクリプトを使いたいのです。
そのPerlスクリプトは、Linux上でJperlを必要としているのですが、
私が探した範囲では、Linux用のJperlのパッチは、5.005ベースのものしかありません。
パッチをあてようとしてもうまくあたりません。
この、Jperlを必要としているPerlスクリプトをLinux上で動かすには、
どのような解決策があるのでしょうか。どなたか、よろしくお願いしますです。
0829nobodyさん
02/07/14 14:33ID:???0830nobodyさん
02/07/14 15:00ID:xUfIRkakJperlを必要とする既製スクリプトってたいしたことなさそうだから、
一から自分でコーディングしてみては?
0831nobodyさん
02/07/14 15:29ID:ZiG6NcZV>>830さん
レスありがとうございます。確かに、その通りなんですが、
1>そのスクリプトが200KBほどある
2>日本語の文章の構造解析のスクリプトなので、日本語処理がチョット複雑
3>あくまでもテストとして、ちょっと動かしてみたいだけなので、できるだけ手間を
かけたくない
という理由で、Perl5.005のソースをDLして、それにパッチを当てようと思っていた
のですが、Perl5.005のソースがなんか見当たらないのです。
0832nobodyさん
02/07/14 15:52ID:???簡単に見つかる予感。
0833831
02/07/14 16:00ID:ZiG6NcZVググルで、"perl5.005 src"で見つけました。
すんませぬ。"perl5.005 source"とか”rpm"とかで検索していたオラが
間抜けでした。逝ってきます。
Perl暦2日なんで、許してやってくだされ。
0834nobodyさん
02/07/14 19:04ID:???O_RDONLY = 0
O_WRONLY = 1
O_O_RDWR = 2
とかは分かってるけど
O_APPENDとかは?
検索してもヒットせず…
おしえてくらはい
0835nobodyさん
02/07/14 20:53ID:???http://www.linux.or.jp/JM/html/LDP_man-pages/man2/open.2.html
大体こんな所でしょ
0836nobodyさん
02/07/14 21:01ID:???それって歴史的に環境依存だから0.1位しか信用出来ないよ?
0837二つ目のお気に入りとして使って
02/07/14 23:31ID:gWk8eFjtゲーションリンク機能を使って右フ
レームにリンク先をさくさく表示。
今までのリンク集のようにいちいち
戻らなければならないなんてことは
ありません。
http://home9.highway.ne.jp/cym10262/
0838nobodyさん
02/07/15 00:06ID:???元ファイル開いてメモリに読み込んで別ファイルに書き出すじゃメンドイし
どの環境でも使える方法でなんか一発でする方法ないですか?
copy a b
0843838
02/07/15 00:32ID:???やってみたらやっぱりエラーが出ました。
String found where operator expected at test.cgi line 1, near
(Do you need to predeclare copy?)
syntax error at test.cgi line 1, near "copy "a.txt""
String found where operator expected at test.cgi line 1, near
(Missing operator before "b.txt"?)
Execution of test.cgi aborted due to compilation errors.
0847nobodyさん
02/07/15 07:25ID:???という場合は
if(($data !~ /&/) || ($data !~ /=/)) {exit;}
こうでいいんでしょうか?
0848nobodyさん
02/07/15 07:59ID:Gdw1y7VE私も初心者だから違うかもしれないけど
0849nobodyさん
02/07/15 09:00ID:AMXAGLXX聞くより試した方が早いだろうに。
exit if(index($data,'&') == -1 || index($data,'=') == -1);
こっちのが数倍軽い。美しくは無いが。
0851nobodyさん
02/07/15 12:21ID:???0852nobodyさん
02/07/15 12:44ID:???全くもってうまく動きません。
具体的にもうしますと、最近サイトのトップページでよく見かけるようなミニアンケートを作りたいんですが、
ラジオボタンで選択した値などが、まったく送信されてないみたいなんですが、
htmlファイル上のフォームから、別ファイルのCGIへ値を送信する場合なにか特別なことが必要なのでしょうか?
0853nobodyさん
02/07/15 13:03ID:???↓
送信ボタン押す
↓
ブラウザが、指定されたメソッドに従ってパラメータの名前や値をまとめる
そして cgi に送信
↓
cgi でそれを受け取る
↓
受け取ったのはまとまらさってるので
パラメータの名前や値に分解しなければなりません
↓
分解した
↓
色んな処理
↓
処理が終わったから新しい画面を表示させよう、
表示させるにはブラウザにhtmlを送ります(正確には他にも必要)
↓
cgi からおくらさってきた〜〜
↓
ブラウザに表示
どこでコケてる?
0854nobodyさん
02/07/15 13:18ID:???たぶん、
ブラウザが、指定されたメソッドに従ってパラメータの名前や値をまとめる
そして cgi に送信
↓
cgi でそれを受け取る
あたりでこけてる気がするのですが、
<input type="hidden" name="mode" value="vote">
をフォーム内に記述して、
if($param{mode} eq 'vote'){
簡単な処理
}
としてみても、「簡単な処理」を一切してくれないので、値を送信しないでCGIを起動だけしてる感じです。
$param{mode}が空の時は、投票結果表示の処理をさせてるので、新規ウィンドウに投票結果が反映されていない
グラフがむなしく表示されています。
なにがいけないんだろ。。。。。。
0855nobodyさん
02/07/15 13:29ID:???この処理がやってないぞ。定型。
local($pair,$buffer);
if($ENV{'REQUEST_METHOD'} eq 'POST'){
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
}elsif($ENV{'REQUEST_METHOD'} eq 'GET'){
$buffer = $ENV{'QUERY_STRING'};
}
local(@pairs) = split(/&/,$buffer);
foreach $pair(@pairs){
local($name,$value) = split(/=/,$pair);
$FORM{$name} = $value;
}
0856nobodyさん
02/07/15 13:30ID:???0857nobodyさん
02/07/15 13:50ID:???すいません、書き忘れてましたが、データを受け取る処理も書き記しております。
頂いたレスを見ますかぎり、CGI→同じCGIのデータの受け渡しと、特に変わらない処理でデータを受け取れる
ということなのでしょうか。
0858nobodyさん
02/07/15 14:02ID:???0859nobodyさん
02/07/15 14:25ID:???$param{'mode'}にしたら直ったりは?
0861nobodyさん
02/07/15 14:33ID:???$param{'mode'}
$param{"mode"}
どれでも変わらんよ。
0862nobodyさん
02/07/15 14:51ID:???Perlのバージョンに影響されない?
Perl4ならクォートは必須だけど、今更4との互換性を考える必要は無いと思う。
0864nobodyさん
02/07/15 15:59ID:???悪かったな!
漏れのプロバのスペースがPerl4なんだYo!(涙ッシュ
0865nobodyさん
02/07/15 17:20ID:???設置方法が悪いのかな?それとも対応してないとか?
0866nobodyさん
02/07/15 17:20ID:???0867865
02/07/15 17:21ID:XqyW9sRL俺?
0868865
02/07/15 17:22ID:XqyW9sRL0869865
02/07/15 17:27ID:XqyW9sRL0870nobodyさん
02/07/15 17:29ID:???0871nobodyさん
02/07/15 17:30ID:Zf9qVko0http://cgi.tripod.co.jp/
0872865
02/07/15 17:59ID:XqyW9sRL0873nobodyさん
02/07/15 18:13ID:???0874すいません。。。
02/07/15 19:01ID:GXUWDI7HQuid Pro Quo 2.1.2が欲しいんです。
http://www.socialeng.com/html/download.html
で落とせると聞いたのですが、一向につながらない・・・
ここ以外では配付とかされていないんでしょうか??
よろしくおながいします。
ちなみにMacintosh用です。
0875nobodyさん
02/07/15 19:06ID:???とかのスレの方がふさわしくない?
0876nobodyさん
02/07/15 19:25ID:/pkMmlTE配列に入らないのですけれど、どこが変か教えて下さい。
htmlの部分↓
ーーーーーーーーーーーーーーーーーー
<form method="get" action="hoge.cgi">
<input type="text" name="E0" size="4" istyle="4" maxlength="4">年</input><br>
<input type="text" name="E1" size="2" istyle="4" maxlength="2">月</input><br>
<input type="text" name="E2" size="2" istyle="4" maxlength="2">日</input><br>
<input type=radio name="E3" value=1 CHECKED>男<br>
<input type=radio name="E3" value=2>女<br>
<input type="submit" value="押す">
<hr>
</form>
cgiの部分↓
ーーーーーーーーーーーーーーーーーー
$buffer = $ENV{"QUERY_STRING"};
@buf = split( /&/ , $buffer );
foreach $data ( @buf ){
( $name , $value ) = split( /=/ , $data );
$FORM{$name} = $value;
@list = values %FORM;
};
print"list[0] $list[0]<br>\n";
print"list[1] $list[1]<br>\n";
print"list[2] $list[2]<br>\n";
print"list[3] $list[3]<br>\n";
これをやってみるとこんなふう↓になります
ーーーーーーーーーーーーーーーーーーー
list[0] E3の値
list[1] E0の値
list[2] E1の値
list[3] E2の値
0877nobodyさん
02/07/15 19:27ID:???@list = values %FORM;
するのかわからん。
0878すいません。。。
02/07/15 19:43ID:GXUWDI7H逝って来ま。
0879876
02/07/15 19:46ID:???分かりました〜♪ありがとうございます。
$buffer = $ENV{"QUERY_STRING"};
@buf = split( /&/ , $buffer );
foreach $data ( @buf ){
( $name , $value ) = split( /=/ , $data );
$FORM{$name} = $value;
};
print"FORM[0] $FORM{E0}<br>\n";
print"FORM[1] $FORM{E1}<br>\n";
print"EORM[2] $FORM{E2}<br>\n";
print"FORM[3] $FORM{E3}<br>\n";
0880nobodyさん
02/07/15 21:25ID:???print <<"HTML"
<html><body>〜略〜</body></html>
HTML
とやりたいんですがこれだとエラーになります。
タブを入れたまま動くようにするにはどうしたらいいでしょうか?
あとタブを入れてないと動くのですがその中に<a href="mailto:[email protected]">xxx</a>
があるとエラーになります。どうしてなのでしょうか?
0881nobodyさん
02/07/15 21:28ID:???; が入ってないけど、動くの?
>href="mailto:[email protected]">xxx</a>
\でエスケープしたら?
href=\"mailto:aaaa\@hotmail.com\">xxx</a>
0882 ◆Smt8k/ss
02/07/15 21:29ID:wkNqkF1j<html><body>〜略〜</body></html>
HTML
0883nobodyさん
02/07/15 22:32ID:h7+zOLje一応動いたんですがもうちょっと見栄えがいいやり方無いでしょうか?
0884nobodyさん
02/07/16 00:48ID:???<html><body>〜略〜</body></html>
~;
@はエスケープしる
0885nobodyさん
02/07/16 02:17ID:???ダイス機能付きのチャットを作っているのですが、どうにもrand関数の値が偏ります。
3D6(6面ダイス3個の判定)の場合、1個目の数字が連続で同じ数字になります。
試しにWeb上にアップして試した所、そっちでは3個目の数字が連続で同じ数字になりました。
これはrand関数において仕方のないことなのでしょうか?
もし解決策などがあるのでしたらご教授いただけると嬉しく思います。
以下はダイスロール部分のソースです。
# $in{'dice_any'}にダイスの数、$in{'dice'}に何面ダイスかの情報が入ってくる。
srand(time);
$dice_roll = qq(<br><b><font color=0000FF>$in{'dice_any'}D$in{'dice'} ダイス判定</font></b> <font color=0066FF>);
$dice_all = 0; # ダイスの出目の合計用の変数
$plus = "";
while($in{'dice_any'} > 0){# ダイスの数が尽きるまで
$dice = int(rand($in{'dice'})) + 1;
$dice_roll .= qq($plus$dice );
$dice_all += $dice;
$in{'dice_any'}--;
$plus = "+ ";
}
if($dice != $dice_all){# ダイスが2個以上なら
$dice_roll .= qq( = <b>$dice_all</b>); # 合計値表示
}
$dice_roll .= qq(</font> );
# この後$dice_rollをログに保存
どなたかよろしくお願いします。
0886nobodyさん
02/07/16 03:00ID:???0887885
02/07/16 03:07ID:???0888nobodyさん
02/07/16 03:09ID:1NQx5kwR|
|-folder1
|-main.cgi
このようなファイル構造なんですが
main.cgiからtest.plを参照することは可能なんですか・・?
0889887
02/07/16 03:13ID:1NQx5kwRずれてる自己レス・・・
root にtest.plが有って
folder1にmain.cgiが有る状態です
つまり下位のファイルに参照できるかどうかと言うのが疑問なのです・・・
0890nobodyさん
02/07/16 04:53ID:???require '/home/mona/public_html/test.pl';
大体こんな感じ。鯖でちがう。
0891nobodyさん
02/07/16 06:01ID:???ソケットプログラム書くときサーバからのレスポンス(OK 200とか)がうざいんですが
これを消す方法ってないんですか?
0892887
02/07/16 06:35ID:1NQx5kwRwinだと相対パス行けるのですが
いざUPするとできません・・・
相対的にはこんな感じで
../member/data/point.pl
絶対的には
/home/as***/public_html/*****/cgi-bin/member/data/point.pl
こんな風なのですが・・・
HTTPを使う限り、それを消す方法は無いよ。
単に無視するだけなら可能だけどね。
その場合は最初の空行までを読み飛ばせば良い。
>>892
パーミッションがあれば、相対でも絶対でもいけると思うけど。
0894nobodyさん
02/07/16 08:49ID:???0895852
02/07/16 09:20ID:mWVjtM4S送信ボタンに、onMouseUPで新規ウィンドウを開き、そこにデータを受け取った後の結果を表示させるようにCGIにリンクさせてるんですが、
そのjavascriptをいれてると、データが送信されてないみたいです。
試しに投票フォームと同じウィンドウ上で結果を表示させると、うまくいきました。
submitボタンにビヘイビアを仕込むとダメなんでしょうか?
0896ぽよぽようんこ(本物)
02/07/16 13:47ID:???■ このスレッドは過去ログ倉庫に格納されています