Perl コーディング初心者質問コーナー Part33
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/03/01 02:46ID:1GeWO7LH【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこう言う事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
過去ログやお勧めサイトは >>2-10
0002nobodyさん
04/03/01 02:49ID:1GeWO7LH【Perl上級者コーナーPart01】
http://pc2.2ch.net/test/read.cgi/php/1024741312/
CGI: Common Gateway Interface part 11
http://pc2.2ch.net/test/read.cgi/php/1055597189/
【Perl,CGI】参考書籍 第三版
http://pc2.2ch.net/test/read.cgi/php/1030209573/
★三 【 スクリプト改造工房 PART 8 】 ★三
http://pc2.2ch.net/test/read.cgi/php/1077525387/
【 スクリプト改造依頼スレ 】(丸投げ)
http://pc2.2ch.net/test/read.cgi/php/1076831972/
△▲ WebProg 初心者の質問 Part7 ▼▽
http://pc2.2ch.net/test/read.cgi/php/1073460282/
【Perl】ファイルロック(排他処理)について語ろう
http://pc2.2ch.net/test/read.cgi/php/1024795138/
★負荷軽減対策委員会(Perl、PHP)★
http://pc2.2ch.net/test/read.cgi/php/1034645635/
【Perl】掲示板を使ろう!
http://pc2.2ch.net/test/read.cgi/php/988890976/
Perlモジュールについて
http://pc2.2ch.net/test/read.cgi/php/997829243/
CGIに依存しないPerlの話題一般/Part2
http://pc2.2ch.net/test/read.cgi/php/1030548610/
0003nobodyさん
04/03/01 02:49ID:1GeWO7LHPart1 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 http://pc.2ch.net/php/kako/1026/10269/1026977659.html
Part15 http://pc.2ch.net/php/kako/1028/10288/1028816385.html
0004nobodyさん
04/03/01 02:50ID:1GeWO7LHPart16 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
part20 http://pc2.2ch.net/php/kako/1044/10447/1044717887.html (タイトルに19と誤記)
part21 http://pc2.2ch.net/php/kako/1047/10479/1047980851.html
part22 http://pc2.2ch.net/php/kako/1050/10503/1050369328.html
part23 http://pc2.2ch.net/php/kako/1053/10530/1053051519.html
part24 http://pc2.2ch.net/php/kako/1054/10549/1054992610.html
part25 http://pc2.2ch.net/php/kako/1056/10567/1056730690.html
part26 http://pc2.2ch.net/php/kako/1059/10590/1059043704.html
part27 http://pc2.2ch.net/php/kako/1060/10608/1060808783.html
part28 http://pc2.2ch.net/php/kako/1063/10635/1063562491.html
part29 http://pc2.2ch.net/php/kako/1066/10662/1066286828.html
part30 http://pc2.2ch.net/test/read.cgi/php/1069846177/
part31 http://pc2.2ch.net/test/read.cgi/php/1072896288/
part32 http://pc2.2ch.net/test/read.cgi/php/1075545279/ (タイトルに31と誤記) 前スレ
[ひまぢん氏のミラー]
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
0005nobodyさん
04/03/01 02:51ID:1GeWO7LH・http://www.excite.co.jp/world/ # 英文のページ多いから一応
・Perl Com: http://www.perl.com/
・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/
0006nobodyさん
04/03/01 02:53ID:1GeWO7LH・Home - Japanized Perl Resources Project: http://perldocjp.sourceforge.jp/
・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/
0007nobodyさん
04/03/01 03:36ID:???0008nobodyさん
04/03/01 04:21ID:???0009nobodyさん
04/03/01 04:45ID:???0010nobodyさん
04/03/01 09:06ID:???0011nobodyさん
04/03/01 11:13ID:???0012nobodyさん
04/03/01 15:07ID:OuFmXd5y現在GIFカウンタ作っています。
QUERY_STRINGの値で、昨日・今日・合計の三つの数値のどれを呼び出すかを決めています。
例えば<img src="counter.cgi?total">と書けば、カウントが1増えた合計値が表示されるのはいいのですが、
<img src="counter.cgi?total"><img src="counter.cgi?today">などと書いた場合、
?totalで+1された後に、さらに?todayで+1されてしまい、カウントが2つ上がってしまいます。
どのような記述をすれば回避できますでしょうか?
0013nobodyさん
04/03/01 15:55ID:???0015nobodyさん
04/03/01 16:32ID:???Todayがカウントアップする時にTotalもカウントアップするのは問題ないのでは。
Totalが+1でTodayが+2とか言うのは問題だが。
0017nobodyさん
04/03/01 17:18ID:???>>15氏
お言葉有難うございます。
totalのみを表示するときには、totalがカウントアップするときにはtodayもきちんとカウントアップします。
また、todayのみを表示するときには、todayがカウントアップするときにはtotalもきちんとカウントアップします。
問題となっている点は、今日と合計のアクセスを表示する場合、
<img src="counter.cgi?today"><img src="counter.cgi?total">
と記述しているのですが、二回CGIを呼び出すため、カウントが2つ回ってしまうということです。
例えば、合計カウントが1000、今日のカウントが200の場合、
<img src="counter.cgi?today"> だけならば、合計1001、今日201となります。
同じく、<img src="counter.cgi?total"> だけならば、合計1001、今日201となります。
しかし、
<img src="counter.cgi?today"><img src="counter.cgi?total">
このように両方呼び出した場合、
1つめのCGIの呼び出しで合計1001、今日201となり、表示するのは201なのですが、
totalの値を呼ぶ際にもう一度CGIを呼ぶことによって合計1002、今日202となり、合計の表示が1002となってしまうのです。
ロジックの問題なので、WebProg 初心者の質問 Part7に行ったほうがいいですかね。
0018nobodyさん
04/03/01 17:21ID:???>>16氏
>1:全部セットで使うと決めて、Total(today)でのみカウントアップにする
やはりこの方式が一番手っ取り早いでしょうか。
そちらのやり方も検討してみます。
わざわざレス有難うございました。
0019nobodyさん
04/03/01 18:07ID:???0022nobodyさん
04/03/01 19:47ID:???printf qq(%d<br>\n), int(rand $#Life);
my @Life = qw(溺死 焼死 轢死 凍死 瀕死
田中麗奈と恋人になる 田中麗奈と結婚 田中麗奈とSEX SEX後に腹上死 SEXなんて永遠に出来ず孤独死);
my $count = 0;
foreach (@Life){
printf qq(%d %s<br>\n), $count++, $_;
}
これでどうだ。
002322
04/03/01 19:48ID:???まぁいいや。俺は4、5、6です。
0024nobodyさん
04/03/01 20:10ID:???具体的には、変数に任意の数が入っていて、それを全角にしたいんです。
$data = 1234;
としてここで何か処理をして
$dataの値を"1234"としたいわけです。
自分では
$data =~ s/0/0/g;
$data =~ s/1/1/g;
:
:
$data =~ s/8/8/g;
$data =~ s/9/9/g;
というのを考えたんですがもっとうまい書き方はないかと思い質問してみました。
002522
04/03/01 20:14ID:???ttp://tohoho.wakusei.ne.jp/lng/199911/99110327.htm
こんな感じで検索。
http://www.google.co.jp/search?q=Perl+%E5%85%A8%E8%A7%92%E6%96%87%E5%AD%97+%E5%A4%89%E6%8F%9B&sourceid=opera&num=0&ie=utf-8&oe=utf-8
0026未承諾広告※ ◆TWARamEjuA
04/03/01 21:11ID:???0029nobodyさん
04/03/01 21:31ID:???質問させてください。
「hoge.log」というファイルがあり中身は
3212421321,ほげ,1543443246,ほげ,ほげ
.
.
.
.
3546754134,ほげ,3224654724,ほげ,ほげ
2346567945,ほげ,6735432758,ほげ,ほげ
.
.
.
.
となっています。
つまり、[ランダムな10桁の整数],ほげ,[ランダムな10桁の整数],ほげ,ほげ
って感じのが改行されていっぱいあると思ってください。データはコンマ区切り。
そこで、サブルーチンで引数1「3546754134」と引数2「1234567890」を渡して、
引数1とマッチする行をhoge.logの先頭の行に持ってきて、さらに先頭に持ってきた
行の三番目のランダムな10桁引数2に置換したいのです。
ご理解いただけるでしょうか。
だれかエライ人明解なコードを教えてください。
003029
04/03/01 21:34ID:???訂正
#
そこで、サブルーチンに引数1「3546754134」と引数2「1234567890」を渡して、
引数1とマッチする行をhoge.logの先頭の行に持ってくる。
さらに先頭に持ってきた行の三番目の区切りの「ランダムな10桁の整数」を
引数2に置換したいのです。
#
0031nobodyさん
04/03/01 22:04ID:???my($line,@line);
open(IN, "+<hoge");
while (<IN>){
/^$_[0],/o and ($line= $_,last) or push(@line, $_);
}
seek(IN, 0, 0);
$line=~ s/,\d{10},/$_[1]/;
print IN $line,@line;
close(IN);
}
003231
04/03/01 22:06ID:???sub hoge{
my($line,@line);
open(RW, "+<filename");
while (<RW>){
/^$_[0],/o and ($line= $_,last) or push(@line, $_);
}
seek(RW, 0, 0);
$line=~ s/,\d{10},/,$_[1],/;
print RW $line,@line;
close(RW);
}
003329
04/03/01 22:23ID:???すごい・・・。perl初めて一週間なのですが私にはこのような考え方は
一生生まれないのだろうな。配列の使い方ってこんな風に使えるのですね。
いっぱいコード書いて、たくさん練習します。
ちなみにまだよく>>31氏のコードを理解できてません。一生懸命徹夜で理解してみます。
なんでか知らないけど、思うように動いてしまった。
そんな感じの空虚さが頭でグルグル回ってます。あと何年勉強したらこういう
コードがすぐに書けるようになるのだろうか。がんばります。
#私はCの知識もなければperlがはじめての言語なので、プログラムの感覚も
泡を握っているようでむなしいです。#
とにかくありがとうございました。
0034nobodyさん
04/03/01 22:45ID:???my @numbers = qw(0 1 2 3 4 5 6 7 8 9);
$data = join('', map{ $numbers[$_] } split(//, $data));
こんなでもいいんじゃない?
003531
04/03/01 23:02ID:???処理速度・負荷がどうかわからんが、例えばSJISの場合以下のように
したらどう? 実行環境が今ないからベンチ採れないけど
tr/\x30-\x39/\x4f-\x58/;
s/(.)/\x82$1/g;
0036nobodyさん
04/03/01 23:33ID:???複数行の文字列をprintする時、
print ( "hoge\n" );
print ( "hoge2\n" );
print ( "hoge3\n" );
とそのままやるのと、
$buffer .= "hoge\n";
$buffer .= "hoge2\n";
$buffer .= "hoge3\n";
print ( "$buffer" );
と変数に入れて最後にprintするのどっちがいいのですか。
見やすさ、スピード、慣習、などの観点から。
003734
04/03/02 00:00ID:???use Benchmark qw(:all);
my $result = timethese(-5, {
34=>sub{
my $data = 123456;
my @numbers = qw(0 1 2 3 4 5 6 7 8 9);
$data = join('', map{ $numbers[$_] } split(//, $data));
},
35=>sub{
my $data = 123456;
$data =~ tr/\x30-\x39/\x4f-\x58/;
$data =~ s/(.)/\x82$1/g;
},
});
cmpthese($result);
Benchmark: running 34, 35 for at least 5 CPU seconds...
34: 4 wallclock secs ( 5.28 usr + 0.00 sys = 5.28 CPU) @ 27106.27/s (n=143155)
35: 5 wallclock secs ( 5.30 usr + 0.00 sys = 5.30 CPU) @ 37172.03/s (n=197186)
Rate 34 35
34 27106/s -- -27%
35 37172/s 37% --
# @numbersを外へ掃き出した場合。
Benchmark: running 34, 35 for at least 5 CPU seconds...
34: 4 wallclock secs ( 5.31 usr + 0.00 sys = 5.31 CPU) @ 36571.67/s (n=194287)
35: 4 wallclock secs ( 5.28 usr + 0.00 sys = 5.28 CPU) @ 37336.99/s (n=197186)
Rate 34 35
34 36572/s -- -2%
35 37337/s 2% --
# 正規表現の方が速いか。
0038nobodyさん
04/03/02 00:06ID:???Print <<_EOF_;
Content-type:text/html
<html>
......(略)......
<!--#exec cgi="./fSize.cgi"-->
......(略)......
</html>
_EOF_
でやってみたのですが、SSIが単なるコメントとして扱われてしまいました。
0039eaoska047124.adsl.ppp.infoweb.ne.jp
04/03/02 00:12ID:QKupWf2Oリモートホスト?
みたいなものを、取得したいんですが、
$ENV{'REMOTE_ADDR'};
と書いても、数字のIPしか取得できませんでした。
文字列取得するには、どうすればいいですか?
0040nobodyさん
04/03/02 00:13ID:???#define NUMBER
0041nobodyさん
04/03/02 00:14ID:???C言語みたいに
#define NUMBER 200
のように、定数を宣言できませんか?
004342
04/03/02 00:14ID:???0046nobodyさん
04/03/02 00:18ID:???鯖によって、$ENV{'REMOTE_ADDR'}; がホスト返さないこともあるから、その場合は
$addr = $ENV{'REMOTE_ADDR'};
$host = gethostbyaddr(pack('C4',split(/\./,$addr)),2) || $_;}
って書こうとオモタラ$ENV{'REMOTE_ADDR'};ですか。そりゃとれんよ・・・
$ENV{'REMOTE_HOST'}な
0047nobodyさん
04/03/02 00:20ID:???×$ENV{'REMOTE_ADDR'}; がホスト返さないこともあるから
×$ENV{'REMOTE_HOST'}; がホスト返さないこともあるから
0050nobodyさん
04/03/02 00:24ID:???■ このスレッドは過去ログ倉庫に格納されています