【Perl】初心者コーナー Part19
■ このスレッドは過去ログ倉庫に格納されています
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 ([email protected]), 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";
の方がいいと思う
■ このスレッドは過去ログ倉庫に格納されています