自作CGIを評価するスレ (672レス)
自作CGIを評価するスレ http://medaka.5ch.io/test/read.cgi/php/1049514428/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
43: 4 ◆R.zOhOehsw [] 03/04/06 02:47 ID:t3fZoblF ご意見どうも。 >・一行書き出すのにヒアドキュメント使うのは何故? エディタで折り返すのが気になるので.. >・かと思えばqq連発で使ってたり… Emacsなので、ヒアドキュメントだと表示する特殊によって 自動のタブがおかしくなるのです.. 全部個人的なことですね..修正します。 myに関しては、ちょっと調べてみます。 その他の意見に関しても、もう一度よく考え直してみます。 http://medaka.5ch.io/test/read.cgi/php/1049514428/43
44: 4 ◆R.zOhOehsw [] 03/04/06 02:49 ID:t3fZoblF >特殊 特殊文字、記号です。 http://medaka.5ch.io/test/read.cgi/php/1049514428/44
45: nobodyさん [sage] 03/04/06 02:50 ID:??? >>43 cperl-mode使ってる? myは変数のスコープを局所範囲に閉じ込めるためのもので、 mainパッケージでmy使ってもmainパッケージ全体から読み書きできてしまうので いやーんな感じ http://medaka.5ch.io/test/read.cgi/php/1049514428/45
46: nobodyさん [sage] 03/04/06 02:53 ID:??? >>41 2193行目 $error_name = @_[0]; → $error_name = $_[0];でいいだろ あちこちの変数、もうちょっとスコープを考えてレキシカルに するとかしたほうがいい。 問題ないけど、読み取りopenに < をつけたりつけなかったりなどしてるのを 書き方統一したら? 他の部分なんかでも統一させる書き方をくせにしたほうが可読性良くなるし。 吐いてるhdmlはすぐにテストできないから見ていない。 http://medaka.5ch.io/test/read.cgi/php/1049514428/46
47: 4 ◆R.zOhOehsw [] 03/04/06 03:00 ID:t3fZoblF >>45サン Emacsは、普通にそのまま.plとして読んだ感じで使ってます.. mainで、my使うと、別の関数から書きかえれないのでは? それは意味ないのでしょうか? http://medaka.5ch.io/test/read.cgi/php/1049514428/47
48: 4 ◆R.zOhOehsw [] 03/04/06 03:03 ID:t3fZoblF もしかして、mainで書いた関数は、mainに含まれますか..汗 勝手に、関数を覗いた部分がmail{}となるのかと思ってました。 http://medaka.5ch.io/test/read.cgi/php/1049514428/48
49: nobodyさん [sage] 03/04/06 03:04 ID:??? >>47 >mainで、my使うと、別の関数から書きかえれないのでは? 「別の関数」が良く分からんが、mainパッケージに属している関数では my $a = 1; print $a,"\n"; &routine; print $a,"\n"; sub routine {$a = 3;} $ perl hoge.pl 1 3 となる。 http://medaka.5ch.io/test/read.cgi/php/1049514428/49
50: nobodyさん [sage] 03/04/06 03:05 ID:??? #!/usr/bin/perl require "hage.pl"; my $a = 1; print $a,"\n"; &hage::routine; print $a,"\n"; # ↓はhage.pl #!/usr/bin/perl package hage; sub routine {$a = 3;} 1; では、 $ perl hoge.pl 1 1 となる(安全 http://medaka.5ch.io/test/read.cgi/php/1049514428/50
51: nobodyさん [sage] 03/04/06 03:06 ID:??? >>48 main関数なんてもんはない。 mainパッケージ。この辺はちゃんと勉強した方が良かれと思われる。 http://medaka.5ch.io/test/read.cgi/php/1049514428/51
52: 4 ◆R.zOhOehsw [] 03/04/06 03:08 ID:t3fZoblF はい、よく分かりました。 ありがとうございます。 http://medaka.5ch.io/test/read.cgi/php/1049514428/52
53: 41 [sage] 03/04/06 03:11 ID:??? >>46 御意見ありがとう御座います。 こんなに早く返って来るなんて…。感激です。 …と言うより、私の記述が雑なので簡単に変な所が見つかってるだけなのだろうか。複雑な気分…汗 もし、ヒマな方がいらっしゃいましたらまだまだ御意見をたくさんお聞かせ下さい。 http://medaka.5ch.io/test/read.cgi/php/1049514428/53
54: nobodyさん [sage] 03/04/06 03:13 ID:??? どれどれ。ちょっと見てみるか。 http://medaka.5ch.io/test/read.cgi/php/1049514428/54
55: nobodyさん [sage] 03/04/06 03:16 ID:??? >>53 Name "main::get_time_yday_2" used only once: possible typo at H:\Work\山口BBS200b1\ybbs.cgi line 2336. Name "main::get_time_isdst_3" used only once: possible typo at H:\Work\山口BBS200b1\ybbs.cgi line 2339. Name "main::get_time_isdst_2" used only once: possible typo at H:\Work\山口BBS200b1\ybbs.cgi line 2336. Name "main::get_time_wday_3" used only once: possible typo at H:\Work\山口BBS200b1\ybbs.cgi line 2339. Name "main::mail_jcph" used only once: possible typo at H:\Work\山口BBS200b1\ybbs.cgi line 2071. Name "main::get_time_yday" used only once: possible typo at H:\Work\山口BBS200b1\ybbs.cgi line 2333. Name "main::get_time_sec_3" used only once: possible typo at H:\Work\山口BBS200b1\ybbs.cgi line 2338. Name "main::get_time_wday_2" used only once: possible typo at H:\Work\山口BBS200b1\ybbs.cgi line 2336. Name "main::get_time_sec" used only once: possible typo at H:\Work\山口BBS200b1\ybbs.cgi line 2332. Name "main::get_time_wday" used only once: possible typo at H:\Work\山口BBS200b1\ybbs.cgi line 2333. Name "main::get_time_isdst" used only once: possible typo at H:\Work\山口BBS200b1\ybbs.cgi line 2333. Name "main::get_time_sec_2" used only once: possible typo at H:\Work\山口BBS200b1\ybbs.cgi line 2335. Name "main::main_user_agent" used only once: possible typo at H:\Work\山口BBS200b1\ybbs.cgi line 434. Name "main::get_time_yday_3" used only once: possible typo at H:\Work\山口BBS200b1\ybbs.cgi line 2339. http://medaka.5ch.io/test/read.cgi/php/1049514428/55
56: nobodyさん [sage] 03/04/06 03:20 ID:??? >>55 まあtypoじゃないみたいだけどね。 ・2350行目〜sprintfですっきりと http://medaka.5ch.io/test/read.cgi/php/1049514428/56
57: nobodyさん [sage] 03/04/06 03:31 ID:??? 他人が書いたソースって見てると面白いもんだねぇ・・・ http://medaka.5ch.io/test/read.cgi/php/1049514428/57
58: nobodyさん [sage] 03/04/06 03:31 ID:??? つーか、でかっ 10KB超えるCGIなんて作ったこと無い・・・。 http://medaka.5ch.io/test/read.cgi/php/1049514428/58
59: nobodyさん [sage] 03/04/06 03:32 ID:??? ・receive_error ifはいるのか? ・localの意味が分からないならmyを使おう ・クラックを気にするならcryptを使おう ・684行目はどういう意味? ・=はエスケープしなくていいよ ・PCと携帯を同時に扱うなら、途中までは両者に依存しない処理にしておいて 最後の最後いざ出力するという時に振り分けると綺麗になるよ http://medaka.5ch.io/test/read.cgi/php/1049514428/59
60: nobodyさん [sage] 03/04/06 03:34 ID:??? >>58 儂は300Kのソースがあるぞ(ぉ http://medaka.5ch.io/test/read.cgi/php/1049514428/60
61: nobodyさん [sage] 03/04/06 03:38 ID:??? ・最初(〜300行目)のqqはなんだ? まぁあとは4氏にも共通するけど、インデントがおかしいのと 記述に一貫性がないのが気になるね。 サブルーチンがそこそこ見られるのは良いと思う(ただ、もう少しstrictに書こう) これは個人的な趣味だけど、俺はグローバルなオプションはハッシュにする。 %option =(board_name => "hoge", max_mes => 50 ); みたいに。 http://medaka.5ch.io/test/read.cgi/php/1049514428/61
62: 4 ◆R.zOhOehsw [] 03/04/06 03:45 ID:t3fZoblF >>61 なるほど。 今までファイルから読んだ設定なんかはハッシュにしてましたが、 CGIだと初心者設置者が混乱するかと思って、できるだけ 見た目で分かりそうにしたつもりでしたが、ハッシュのがイカス。 http://medaka.5ch.io/test/read.cgi/php/1049514428/62
63: nobodyさん [sage] 03/04/06 03:49 ID:??? あと、自分的趣味をいうと、subの変数はことごとく局所変数にするほうがいいと思うなぁ sub ayaya{ my $num = shift; $num++; return($num); } みたいな形でやっとくほうが誤動作しにくい。 http://medaka.5ch.io/test/read.cgi/php/1049514428/63
64: 41 [sage] 03/04/06 03:52 ID:??? >>54-60 もう早こんなに…!ありがとう御座います。 最初はなんか晒すの恥ずかしいと思ってたけど、晒して良かったなぁ…(嬉 >>55-56 はい、タイムの所めちゃくちゃです。自分でもここは直さねば!と思ってました。 ありがたく直させてもらいます。 >>57 そうですか。私のレベルだと他人の記述は自分と進めかたが違うので見てると疲れてしまいます。 そんな私はperlしかできず、初めて1年くらいになります。面白いと言って頂けて幸いです。 >>58 >・receive_error ifはいるのか? はい、これは利用者のかたが「0」と設定した場合、 バイト数無制限にするため、判定にかけません。 >・localの意味が分からないならmyを使おう ごもっともです。言われてみると私もlocalの意味が分かりません。汗 >・クラックを気にするならcryptを使おう cryptって分からないので調べてみますね。今は取り敢えず返事を急いでます。 >・684行目はどういう意味? これは、携帯用なのでパケ代の節約です。 &nbsp;だと半角20文字で改行と同じになります。(多くの携帯は横が半角20文字) で、携帯はパケ代(受信料)が深刻なので、 &nbsp;20コ。つまり120バイトを<BR>とし、4バイトに抑えます。 これで受信料は1/30になります。相手が携帯ならではの記述です。 >・=はエスケープしなくていいよ はい。 >・PCと携帯を同時に扱うなら、途中までは両者に依存しない処理にしておいて > 最後の最後いざ出力するという時に振り分けると綺麗になるよ ついつい手抜きでガーッとコピーしてしまいました。汗 http://medaka.5ch.io/test/read.cgi/php/1049514428/64
65: 4 ◆R.zOhOehsw [] 03/04/06 04:01 ID:t3fZoblF localは宣言した{}内から読んだ関数内からでも参照できる。かな.. $cry = crypt('passwd', 'sl'); で、DESというので暗号化します。slはsaltで2byteとります。 暗号化されてた文字列(13byte)の先頭2byteに入りますから、 パスワードを検査するときに、同じsaltでもう一度暗号化して、 暗号済みのものと同じになれば同じパスワードです。 ん、いい説明探したほうが早いか.. http://medaka.5ch.io/test/read.cgi/php/1049514428/65
66: nobodyさん [sage] 03/04/06 04:18 ID:??? ハッシュを普通の変数のように使うのってだめですか? http://medaka.5ch.io/test/read.cgi/php/1049514428/66
67: nobodyさん [sage] 03/04/06 04:23 ID:??? >>66 駄目ではない、用途によって使い分ける事が重要 http://medaka.5ch.io/test/read.cgi/php/1049514428/67
68: nobodyさん [sage] 03/04/06 04:23 ID:??? #○ログファイル $def_log_file = q[./log.txt]; これは納得できるが #○一度に表示されるレスの件数。 #[3〜6]推奨。多く設定すると端末側で読み込めない場合があります。 $def_mess_page = qq[5]; こっちをダブルクオートで囲むのはなぜ? 数値をクオートで囲まれると変な気がする… http://medaka.5ch.io/test/read.cgi/php/1049514428/68
69: nobodyさん [sage] 03/04/06 04:25 ID:??? >>41 >>32 http://medaka.5ch.io/test/read.cgi/php/1049514428/69
70: nobodyさん [sage] 03/04/06 04:32 ID:??? myは本当は局所的に使うためなのはしってるんだけど どうしてもその前後で値が必要になったりすることが多いので サブルーチンなら先頭に全部まとめて書いてる・・・ http://medaka.5ch.io/test/read.cgi/php/1049514428/70
71: nobodyさん [sage] 03/04/06 04:34 ID:??? >>70 余りいい設計じゃないなぁ・・・ subは位置に依存しないものであるべき http://medaka.5ch.io/test/read.cgi/php/1049514428/71
72: 41 [sage] 03/04/06 04:37 ID:??? >>61 >・最初(〜300行目)のqqはなんだ? qq自体の意味でしょうか…?qならシングルクウォートでqqならダブルです。 入力は、ご使用していただく方に任意で入力してもらいます。量が多くてめんどうな気がしますけど…。 >インデントがおかしいのと >記述に一貫性がないのが気になるね。 つまり見にくいと…。私の中では今までで1番気をつけた記述だったりしますが… 頑張ります。 サブルーチンがそこそこ見られるのは良いと思う(ただ、もう少しstrictに書こう) strictってなんだろう、汗。調べてみます。 >これは個人的な趣味だけど、俺はグローバルなオプションはハッシュにする。 >%option =(board_name => "hoge", max_mes => 50 ); みたいに。 そうですか、私はこの記述で 「グローバルな変数の先頭にmain」をつけ、 「ルーチンのみの変数の先頭にルーチン名」を付けたのですが、 名前が長くなりすぎて失敗してしまいました。 >>65 どうもです。 もしかしたら、返事を飛ばしてしまった方が居るかもしれませんがすみません。 明日からでも記述の整理をしたいと思います。 まだまだなにかありましたら、お願いします。ヒマな方は眺めてやって下さい。 当たり前ですが、全部読んで参項にさせてもらってます。 http://medaka.5ch.io/test/read.cgi/php/1049514428/72
73: 41 ◆hht1jkpw9E [sage] 03/04/06 04:43 ID:??? >>69 はい、これで行きます、トリップ。 >>68 もし、 #○一度に表示されるレスの件数。 #[3〜6]推奨。多く設定すると端末側で読み込めない場合があります。 $def_mess_page = 5; とした場合、どこに入力したら良いか目で確認しにくいかと思いまして…。 数字なのでシングルではなく、ダブルで囲んでます。 なんて言うのか、入力する場所を [ここ]; にしたら始めて設置する人でも分かりやすいと考えた結果こうなりました。 http://medaka.5ch.io/test/read.cgi/php/1049514428/73
74: nobodyさん [sage] 03/04/06 04:47 ID:??? >>73 んー基本的なことを言わせてもらうと・・・ コメントでちゃんと書いとけば理解してもらえる範囲じゃないかと思うけどね・・・ それでわからないっていうのは相手する必要が無いような・・・(ぉ http://medaka.5ch.io/test/read.cgi/php/1049514428/74
75: nobodyさん [sage] 03/04/06 04:48 ID:??? >>71 激しく意味不明なやつになっちまったけど sub saitama{ my ($value,$saitama,$hoge); foreach $value (@_){ ($saitama,$hoge) = split(/,/,$value); if($saitama == $hoge){ return 1; } } return 0; } こんなやつもだめ?ってこと http://medaka.5ch.io/test/read.cgi/php/1049514428/75
76: nobodyさん [sage] 03/04/06 04:53 ID:??? って言うか最近多い「4」って香具師は「4番」ではなく、コテハン? 普通に紛らわしい。なんとかしてほしい。 http://medaka.5ch.io/test/read.cgi/php/1049514428/76
77: nobodyさん [sage] 03/04/06 04:55 ID:??? このスレタイっておかしくない? × 自作CGIを評価するスレ ○ 自作CGIを評価してもらえるスレ ○ 自作CGIを評価していただくスレ じゃない? http://medaka.5ch.io/test/read.cgi/php/1049514428/77
78: 71 [sage] 03/04/06 04:55 ID:??? >>75 sub saitama{ my $ret = 0; foreach my $value (@_){ my ($saitama,$hoge) = split(/,/,$value); if($saitama == $hoge){ $ret = 1; last; } } return $ret; } 私ならこう書くかな http://medaka.5ch.io/test/read.cgi/php/1049514428/78
79: 75 [sage] 03/04/06 05:00 ID:??? まぁ意識しろって言われたら 漏れならこう書くんだけど sub saitama{ foreach my $value (@_){ my ($saitama,$hoge) = split(/,/,$value); if($saitama == $hoge){ return 1; } } return 0; } 78のコードと比べるとどっちのほうが 好まれるのかい?まぁ下らんと言えば下らないのだが・・・ >>73 use strict 使ってみたら? http://medaka.5ch.io/test/read.cgi/php/1049514428/79
80: 71 [sage] 03/04/06 05:03 ID:??? まぁ、書き捨てにするか後から見やすく書くかのレベルになる罠(w http://medaka.5ch.io/test/read.cgi/php/1049514428/80
81: nobodyさん [sage] 03/04/06 05:05 ID:??? >>66 普通の変数も無名ハッシュっていう位置づけじゃなかったっけ? http://medaka.5ch.io/test/read.cgi/php/1049514428/81
82: 37 ◆0wPZQfeVoI [] 03/04/06 05:07 ID:t3fZoblF >>76 非常にすみません。 Perlの極意スレの4番です。 もう沈んでどこかに行ったスレです。 なんとなくそのまま4でした、改名します、37です。 http://medaka.5ch.io/test/read.cgi/php/1049514428/82
83: nobodyさん [sage] 03/04/06 05:09 ID:??? >>79 漏れは 何回も使う関数的なやつは結構まともに書いてるけど 本体が長くなるからただ分けただけのサブルーチン的なものだと かなりだらしないわ。 一応strictなコードでmod_perlで動いてる http://medaka.5ch.io/test/read.cgi/php/1049514428/83
84: nobodyさん [sage] 03/04/06 05:10 ID:??? 「出口は一つ」をかたくなに守るのは「gotoを意地でも使わない」と同様に愚行だ。 エラー処理でも if (真) { if (真) { if (真) { # 何か処理 } else { $ret = 0; } } else { $ret = 0; } } else { $ret = 0; } より if (偽) {return 0;} if (偽) {return 0;} if (偽) {return 0;} # 何か処理 の方が圧倒的に見やすいだろう。だから俺は>>79だな。 http://medaka.5ch.io/test/read.cgi/php/1049514428/84
85: nobodyさん [sage] 03/04/06 05:12 ID:??? 「エラー処理を先にやれ」っていう格言をどっかで見た。 それ以上続けるのが無意味と分かっている場合に だらだらと引きずるのは良くない。すぱっとreturnすべき。 http://medaka.5ch.io/test/read.cgi/php/1049514428/85
86: 71 [sage] 03/04/06 05:13 ID:??? >>84 まぁ、別に好きなように書けばいいんだけど、 グローバル変数の値をサブルーチンから出力することもあるし・・・ それ以前に、どのレベルで言ってるかつーのが気になる所かもなぁ ちなみにgotoは使わないよ。必要ないから(w http://medaka.5ch.io/test/read.cgi/php/1049514428/86
87: 37 ◆0wPZQfeVoI [] 03/04/06 05:15 ID:t3fZoblF >>84 なるほど、私は上のほうの書き方しますね.. やはり、コードが見やすいというのもプログラムの重要な要素に はいるのでしょうか? http://medaka.5ch.io/test/read.cgi/php/1049514428/87
88: 79 [sage] 03/04/06 05:16 ID:??? >>84 それ書くなら if(真 && 真 && 真){何か}else{return 0;} だろうなぁ… まぁ趣味でやってるプログラミングなんで 動いたら嬉しいって程度なんだが(w >>83 関数だと割ときれいに書くな 漏れも http://medaka.5ch.io/test/read.cgi/php/1049514428/88
89: 71 [sage] 03/04/06 05:21 ID:??? >>87習慣づけしとけばスパゲッティなソースにはなりにくいのが作れると思うけどねん returnは複数付けるのが一般的らしいな、覚えとこう http://medaka.5ch.io/test/read.cgi/php/1049514428/89
90: 79 [sage] 03/04/06 05:22 ID:??? >>37 貴殿のソースをみたんですが 653-669行・・・ これなんすか?(w http://medaka.5ch.io/test/read.cgi/php/1049514428/90
91: 37 ◆0wPZQfeVoI [] 03/04/06 05:26 ID:t3fZoblF >>89さん そのためには1度しか使わない処理でも無駄にサブルーチン作って、 見やすくすることも必要でしょうか? 趣味で作るので、自分以外がソース読むことが無かったため とりあえず、自分が読めれば気にしなかったのですが。 http://medaka.5ch.io/test/read.cgi/php/1049514428/91
92: 37 ◆0wPZQfeVoI [] 03/04/06 05:29 ID:t3fZoblF >>90 エラー処理ですが、 if () { えらー1} if () { えらー2} if () { error } としたほうがいいですかね? http://medaka.5ch.io/test/read.cgi/php/1049514428/92
93: 71 [sage あっちでは251(w] 03/04/06 05:31 ID:??? >>91 慣れてない時は単純な処理にでもサブルーチンは作ってたけど、 今は、機能ごとにサブルーチンを作ってるって感じですね 同じ処理でも規模がおっきくないとそのまま書きなぐりすることがおおいです http://medaka.5ch.io/test/read.cgi/php/1049514428/93
94: 79 [sage] 03/04/06 05:32 ID:??? >>92 エラーで止める優先度あるの? unless ($a < 100){&error("$aが100以下じゃありません");} unless ($b eq 'GET'){&error("$bがgetじゃありません");} 〜〜 でいいと思うが・・・ http://medaka.5ch.io/test/read.cgi/php/1049514428/94
95: 71 [sage あっちでは251(w] 03/04/06 05:35 ID:??? >>92 @error =( err1, err2, ); $error[$code]; みたいなことを最近よくするな(w http://medaka.5ch.io/test/read.cgi/php/1049514428/95
96: nobodyさん [sage] 03/04/06 05:38 ID:??? >>88 あっと、>>84の例ではエラー処理が同一に書いてしまったのでおっしゃるとおりなんですが、 エラー処理が失敗した段階によって異なると考えてくださいませ http://medaka.5ch.io/test/read.cgi/php/1049514428/96
97: nobodyさん [sage] 03/04/06 05:40 ID:??? ×エラー処理が同一に ○エラー処理の部分に同一の処理を プログラム言語の前に日本語勉強してきます。。。 http://medaka.5ch.io/test/read.cgi/php/1049514428/97
98: 37 ◆0wPZQfeVoI [] 03/04/06 05:40 ID:t3fZoblF >>93 なるほどー。 私は2度以上行う処理で引数と返り値が必要なものをサブルーチンに するようにしていますが、今回少し考え直そうかと。 http://medaka.5ch.io/test/read.cgi/php/1049514428/98
99: nobodyさん [sage] 03/04/06 05:43 ID:??? つーか>>41の掲示板でかッ! 携帯用だと処理が細かくなって増えるのか? http://medaka.5ch.io/test/read.cgi/php/1049514428/99
100: 79 [sage] 03/04/06 05:43 ID:??? 関係無いが・・・漏れはエラー処理の場合 第一引数は数値だよ第二引数になんかメモ sub error内でエラーログに記録する内容とかを振り分けることができる perlだけじゃないが でかいやつになると エラーメッセージ一覧表だけで数KBになる・・ http://medaka.5ch.io/test/read.cgi/php/1049514428/100
101: 37 ◆0wPZQfeVoI [] 03/04/06 05:43 ID:t3fZoblF >>94さん 確かにその通りです。 優先順位などありません.. http://medaka.5ch.io/test/read.cgi/php/1049514428/101
102: 71 [sage] 03/04/06 05:48 ID:??? 基本的にエラーメッセージって書かないなぁ(ぉ 規定外の値だとデフォルト値になるようにしてるなぁ http://medaka.5ch.io/test/read.cgi/php/1049514428/102
103: 79 [sage] 03/04/06 05:49 ID:??? 人によってコーディングの仕方が かなり違うことがわかったんで 今日は寝るサラバ 起きたら局所変数を意識したプログラムを書いてみよう。 http://medaka.5ch.io/test/read.cgi/php/1049514428/103
104: 37 ◆0wPZQfeVoI [] 03/04/06 06:08 ID:t3fZoblF ちょっと修正しました。批判していただいた部分は まだすべて修正できていませんが、一応アド載せときます。 BBS: http://hex51.darktech.org/cgi-bin/the/bbs.pl SRC: http://hex51.darktech.org/the.txt 余談ですが、部屋がめちゃめちゃ寒いです.. http://medaka.5ch.io/test/read.cgi/php/1049514428/104
105: 71 [sage] 03/04/06 06:17 ID:??? my $mini_cgi = './mini.pl'; my $cntfile = './count.dat'; my $log_dir = './logs'; our $lock_name = 'lock'; <中略> my $t_h_width = 0; my $t_f_width = 70; my $name_size = $name_max - 4; my $title_size = $text_cols; この部分って全部グローバルだからourになっちゃうよん my $hoge #グローバルと同意で無意味 { my $hoge; #○ { my $hoge; #○ } } みたいにブラケットで括られた中(サブルーチンでもなんでもいいけど・・・)で宣言した部分じゃないと無意味 http://medaka.5ch.io/test/read.cgi/php/1049514428/105
106: 37 ◆0wPZQfeVoI [] 03/04/06 06:29 ID:t3fZoblF はい、実は上のほうですでに言われました。 さっさとourにしておきます。 http://medaka.5ch.io/test/read.cgi/php/1049514428/106
107: 37 ◆0wPZQfeVoI [] 03/04/06 06:33 ID:t3fZoblF 修正しますた。 http://medaka.5ch.io/test/read.cgi/php/1049514428/107
108: nobodyさん [sage] 03/04/06 06:34 ID:??? ま、あせらずゆっくりいけやー。 http://medaka.5ch.io/test/read.cgi/php/1049514428/108
109: 37 ◆0wPZQfeVoI [sage] 03/04/06 06:52 ID:??? どうもー。 取り合えず今日は寝てません。 http://medaka.5ch.io/test/read.cgi/php/1049514428/109
110: nobodyさん [sage] 03/04/06 08:06 ID:??? my でスコープはファイル・パッケージ内に限定されるんだから意味はあると思うよ。 our にはならない。 別のパッケージから読みこんだりしてるのでなければ、 わざわざ our にする方が意味ないと思うけど? http://medaka.5ch.io/test/read.cgi/php/1049514428/110
111: これ自信作だぜ [] 03/04/06 08:51 ID:dTzeXpbT 修正しましたが何か? http://medaka.5ch.io/test/read.cgi/php/1049514428/111
112: あぼーん [あぼーん] 03/04/06 08:52 ID:??? ┌┬┬┬┐ ―――┴┴┴┴┴―――――、 . . /  ̄ ̄ ̄//. ̄ ̄| || ̄ ̄ ̄||| ̄ || __________ ./ ∧// ∧ ∧| || ||| || / [/____(゚_//[ ].゚Д゚,,) ||___||| || < こんなのが有りますた . ||_. * _|_| ̄ ̄ ∪|.|. |ヽ.__|| \__________ . lO|o―o|O゜.|二二 |.| 救済病院 || .| ∈口∋ ̄_l__l⌒l_|___|_l⌒l._||  ̄ ̄`ー' ̄ `ー' `ー' `ー' http://saitama.gasuki.com/koumuin/ http://medaka.5ch.io/test/read.cgi/php/1049514428/112
113: これ自信作だぜ [] 03/04/06 08:52 ID:dTzeXpbT ↑追加 http://oasis.mininddns.net/ http://medaka.5ch.io/test/read.cgi/php/1049514428/113
114: これ自信作だぜ [] 03/04/06 08:53 ID:dTzeXpbT スマソ。スッペルミス http://oasis.minidns.net/ http://medaka.5ch.io/test/read.cgi/php/1049514428/114
115: あぼーん [あぼーん] 03/04/06 09:17 ID:??? ∋8ノノハ.∩ 川o・-・)ノ <先生!こんなのがありました! __/ / / \(_ノ ̄ ̄ ̄\ ||ヽ|| ̄ ̄ ̄ ̄|| ...|| ̄ ̄ ̄ ̄|| http://saitama.gasuki.com/shinagawa/ http://medaka.5ch.io/test/read.cgi/php/1049514428/115
116: これ自信作だぜ [] 03/04/06 10:29 ID:dTzeXpbT http://oasis.minidns.net/ 蜜柑性だけどな http://medaka.5ch.io/test/read.cgi/php/1049514428/116
117: nobodyさん [sage] 03/04/06 10:35 ID:??? [index.cgi:26:warn] Use of uninitialized value in concatenation (.) or string at /www/oasis/html/index.cgi line 26. [index.cgi:26:warn] Use of uninitialized value in concatenation (.) or string at /www/oasis/html/index.cgi line 26. ってでてるよ>116 http://medaka.5ch.io/test/read.cgi/php/1049514428/117
118: nobodyさん [sage] 03/04/06 10:45 ID:??? 書き方まずかったかな? >>71はブロックの外で宣言すると、例えばサブルーチンの中からでも参照できてしまうので 変数宣言する時は、スコープを絞って適切なブロック内で宣言しよう…と言っているのだと思う。 修正というか、むしろ改悪されえてるような・・・。 our にしてしまうと、他のファイルからも値を参照出来る様になってしまうので、 # つっこみたかったのは、 # > この部分って全部グローバルだからourになっちゃうよん # my で宣言してるのに勝手に our にはならないよー。ってこと。 よくある方法だと、main関数(サブルーチン)を作るか、 単にブロックで囲む。(ラベルは別にいらないけど便宜上) MAIN:{ my $foo = 'bar'; ; } ちなみに、定数宣言なら変数にはせずに、 use constant LOG_DIR => './logs'; という風にしておくと、代入できないから グローバルとか関係なく中の値は保証されるよ。 http://medaka.5ch.io/test/read.cgi/php/1049514428/118
119: 37 ◆0wPZQfeVoI [sage] 03/04/06 14:26 ID:??? なるほど。 囲ってみます。 http://medaka.5ch.io/test/read.cgi/php/1049514428/119
120: 71 [sage] 03/04/06 15:01 ID:??? >>118 >変数宣言する時は、スコープを絞って適切なブロック内で宣言しよう…と言っているのだと思う。 そいう意味.、言い方まずかったですな・・・ http://medaka.5ch.io/test/read.cgi/php/1049514428/120
121: nobodyさん [sage] 03/04/06 15:42 ID:??? {}って while{} foreach{} for{} sub{} {} が?有効なの if{}はどうなるの? http://medaka.5ch.io/test/read.cgi/php/1049514428/121
122: nobodyさん [sage] 03/04/06 15:46 ID:??? 漏れはグローバル変数使いまくりだけど だめかい? http://medaka.5ch.io/test/read.cgi/php/1049514428/122
123: 71 [sage] 03/04/06 15:49 ID:??? >>121 基本的に {}で囲ってる部分は全部スコープになりますよん if{}でも eval{}でも 一緒 ファイルの重複を避ける処理 { my %count; @array = grep(!$count{$_}++, @array); } これみたいに、スコープを作るために括る事もありますし http://medaka.5ch.io/test/read.cgi/php/1049514428/123
124: nobodyさん [sage] 03/04/06 15:57 ID:??? 別に全部$hogehogeみたいなやつでいいじゃん なんで局所変数とかみんなつかうの???? http://medaka.5ch.io/test/read.cgi/php/1049514428/124
125: 71 [sage] 03/04/06 16:00 ID:??? >>124見通しが悪くなるから。 誤動作の元にもなりかねんし http://medaka.5ch.io/test/read.cgi/php/1049514428/125
126: nobodyさん [sage] 03/04/06 16:05 ID:??? >>125 でも配ってるやつってほとんどグローバル変数のみじゃん http://medaka.5ch.io/test/read.cgi/php/1049514428/126
127: 71 [sage] 03/04/06 16:12 ID:??? >>126だから自分で組んでるんだが? グローバルがいいっていうなら、そうすればいいのじゃない? 自分だけでやっとればいいってのなら一向にかまわないけど、 複数の人がからんでくるとなるとそうもいかない http://medaka.5ch.io/test/read.cgi/php/1049514428/127
128: 37 ◆0wPZQfeVoI [sage] 03/04/06 16:44 ID:??? 取り合えず少し直してみました。 今日はPHPで学校の掲示板を作るので あまり変更はないかもしれません。 >>71さん 気をつけないと if ($hoge eq 'hoge') { my $foo = 'hoge!'; } print $foo; この場合マズイですよね? チョットmyについていろいろと試してみます。 http://medaka.5ch.io/test/read.cgi/php/1049514428/128
129: 71 [sage] 03/04/06 16:49 ID:??? >>128 それはスコープの外に print $fooがあるので動作しない if ($hoge eq 'hoge') { my $foo = 'hoge!'; print $foo; } コレが正解 http://medaka.5ch.io/test/read.cgi/php/1049514428/129
130: 37 ◆0wPZQfeVoI [sage] 03/04/06 19:43 ID:??? >>129さん OKっす。 要はCのautoですよね? http://medaka.5ch.io/test/read.cgi/php/1049514428/130
131: nobodyさん [sage] 03/04/06 20:10 ID:??? myを使わなきゃダメって訳じゃない。 使った方が良いってだけで。 http://medaka.5ch.io/test/read.cgi/php/1049514428/131
132: nobodyさん [sage] 03/04/07 00:03 ID:??? グローバルである必要がないならレキシカルを使うほうが 安全だし速度的にも有利だからね。 http://medaka.5ch.io/test/read.cgi/php/1049514428/132
133: nobodyさん [sage] 03/04/07 15:58 ID:??? use vars使うのは反則? http://medaka.5ch.io/test/read.cgi/php/1049514428/133
134: nobodyさん [sage] 03/04/07 16:14 ID:??? ありじゃないの? じゃなきゃそんなモジュール作らんよ。 http://medaka.5ch.io/test/read.cgi/php/1049514428/134
135: nobodyさん [sage] 03/04/07 18:46 ID:??? >>133 使い方次第 http://medaka.5ch.io/test/read.cgi/php/1049514428/135
136: nobodyさん [sage] 03/04/07 22:42 ID:??? localを使おう http://medaka.5ch.io/test/read.cgi/php/1049514428/136
137: ◆YHmsETNOS2 [sage] 03/04/08 16:35 ID:??? すみませんがちょっと漏れのスクリプトを見てください。 ソートの練習なんです。 いちおう漏れの思っている動作しているのですが,突っ込むところがあれば,後学のために色々教えてください。 ソースはこちら, ttp://members.tripod.co.jp/angeldayan/ 使ったデータはこちら ttp://members.tripod.co.jp/angeldayan/data.txt 要 cgi-lib.pl です。 たいしたものじゃなくてごめんなさい。 初心者なんで,これでも1週間かかっちゃったんです。 よろしくお願いします。 http://medaka.5ch.io/test/read.cgi/php/1049514428/137
138: nobodyさん [sage] 03/04/08 18:57 ID:??? >>137 myとかの使い方覚えたほうがいいかも まだはじめたばかりなのならPHPもいいかもよ でスクリプトに関しては ファイルをアップロードするわけでもないんだし 自前でデコードしよう。 http://medaka.5ch.io/test/read.cgi/php/1049514428/138
139: ◆IzdKJ.WAZA [sage] 03/04/08 19:02 ID:??? >>137 漏れも挑戦してみていいかい? http://medaka.5ch.io/test/read.cgi/php/1049514428/139
140: ◆IzdKJ.WAZA [sage] 03/04/08 19:45 ID:??? 疲れた。。とりあえずこんなん? http://iwh11.hp.infoseek.co.jp/p/e/r/perldev/cgi-bin/upload/source/039.txt PerlスクリプトなんでDOSから動かしてね http://medaka.5ch.io/test/read.cgi/php/1049514428/140
141: nobodyさん [sage] 03/04/08 20:25 ID:??? my, our でも変数のスコープは同じなんだけどなぁ。 varsプラグマ(v5.6以降だと our)を使うのは、 use strict 'vars'プラグマを有効にした時に、 複数のパッケージである変数を別のパッケージから使いたい場合、等。 no strict は、場合によっては反則 ... http://medaka.5ch.io/test/read.cgi/php/1049514428/141
142: nobodyさん [sage] 03/04/08 23:45 ID:??? そういえば、さっきmyとmyなしでベンチマークを行ったら myの方が3,4倍遅かったのだけど…。メモリ消費は解らない。 http://medaka.5ch.io/test/read.cgi/php/1049514428/142
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 530 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.664s*