トップページ⇒php
592コメント182KB

KENT氏を超えたい!

■ このスレッドは過去ログ倉庫に格納されています
0001.2001/08/08(水) 00:51ID:???
KENT氏を凌駕するCGIを作りたいけど、彼のスクリプトには隙はない?
スマートすぎる…すばらしひ。
0091名無しさん@お腹いっぱい。2001/08/09(木) 14:00ID:???
>.
ところで69が少女漫画に精通していることの何が衝撃的だったんだ?
0092.2001/08/09(木) 14:23ID:???
>>88
何が必要かは俺が選ぶ。君はKENT氏の長短を述べるだけでいい。
>>89
読んだが具体性に欠けていた。
0093名無しさん@お腹いっぱい。2001/08/09(木) 14:30ID:???
>述べるだけでいい

ってなんで教えてもらう方がこんなに偉そうなの?
0094名無しさん@お腹いっぱい。2001/08/09(木) 14:31ID:???
選べるだけの基礎を身に付けてから生意気な口を叩け。
わからないなら分かるようになるまで頑張れといってるだろ。
0095名無しさん@お腹いっぱい。2001/08/09(木) 14:39ID:???
>>93
夏だからだろ(藁
0096名無しさん@お腹いっぱい。2001/08/09(木) 14:45ID:???
夏だねぇ。

KENTの悪いところ
1.スクリプトが冗長だから省略するのに慣れてる人には読みにくい
2.メモリの利用効率が悪く、スクリプトも速くないからサーバに負荷をかける
3.CGIは起動コストがかかるのでHTMLファイルを生成した方がよい

1は初心者には読みやすくなるし、長所か短所かはその人次第。
上のほうでもだれかそんなようなこと言ってるでしょ。
2と3が問題。この辺については語り尽くされた感があるから過去ログ読むべし。

これでいい?
それとも「○○ってスクリプトの○○行目はこう直したほうが良い」まで教えて欲しいの?
0097名無しさん@お腹いっぱい。2001/08/09(木) 14:53ID:???
>>96
「冗長ってなに? 具体的に言って」とか言い出すよ、きっとあの子(ワラ
0098名無しさん@お腹いっぱい。2001/08/09(木) 15:05ID:???
KENTのダメっぷりを露呈するスレです
0099名無しさん@お腹いっぱい。2001/08/09(木) 15:24ID:???
うわっ こんなスレ有ったんだ、strictって何?myって何?って辺りから考えて
相当キテルよこいつ、多分hello world段階なんだろ
ローカルでBBS書いてるとか怪しすぎ   ワラヒ
みんなマジメすぎるよー、、ちょっと問題出して書かせりゃ大体わかるのに
0100名無しさん@お腹いっぱい。2001/08/09(木) 15:30ID:???
100!
0101名無しさん@お腹いっぱい。2001/08/09(木) 15:48ID:???
KENTさんの本買っちゃったのかな  (^^;
0102名無しさん@お腹いっぱい。2001/08/09(木) 17:15ID:???
1=KENT
0103.2001/08/09(木) 19:35ID:???
>>96
>2.メモリの利用効率が悪く、スクリプトも速くないからサーバに負荷をかける

つまりこのあたりがKENT氏のスクリプトの隙だな。
しかし具体的に言って、メモリの利用効率とスクリプトの速さとは
どのあたりに差が出るのか。これが重要だ,
0104ななしさん2001/08/09(木) 20:16ID:ESTpK3Ic
こんにちは、僕も今掲示板を書いてます。ちなみに超初心者です
1番さんも掲示板をつくられてるみたいなのでここにお書きします。
投稿日:2001/08/09(木) ←時刻をこんな風に表示したいの
ですがどうすれば良いでしょうか? 是非ご教示願います m(_ _)m
0105名無しさん@お腹いっぱい。 2001/08/09(木) 20:19ID:???
何故ココで聞くのか??
0106.2001/08/09(木) 20:23ID:???
>>105
104=99だからだろう。それぐらい気がついてやれ。

>>104
( $sec , $min , $hour , $day , $mon , $year ) = localtime( time );
$mon++;
print FILE join("<>",$kiji,$year,$mon,$day);
投稿記事をログに保存するときに↑という具合に年月日をまとめて保存すればいい。
0107ななしさん2001/08/09(木) 20:30ID:ESTpK3Ic
ありがとう御座いますぅ >>1さん でも、、それだと
2001/8/9(木) 20:19 っていう風になっちゃうんです (;_;
2001/08/09(木) 20:19  こう言う風にしたくて0をつけると今度は
2001/010/011(木) 20:19  とかなっちゃうし・・・・
0108.2001/08/09(木) 20:33ID:???
($sec, $min, $hour, $mday, $mon, $year, $wday) = localtime(time);
$year += 1900;#2001年
@youbi =("日","月","火","水","木","金","土",);
$youbi[$wday]
これで曜日と西暦はいい(はず)。
0109.2001/08/09(木) 20:38ID:???
($sec, $min, $hour, $day, $mon, $year, $wday) = localtime(time);
@youbi =("日","月","火","水","木","金","土",);
$date = sprintf("%04d/%02d/%02d(%s) %02d:%02d",
 $year + 1900, $mon + 1, $day, $youbi[$wday],$hour, $min);
print $date;
ではどうか?
0110名無しさん@お腹いっぱい。2001/08/09(木) 20:47ID:???
>104=99だからだろう。それぐらい気がついてやれ。
笑い所がわからんネタだなぁ
0111.2001/08/09(木) 20:49ID:???
>>110
俺にはどうしたらネタという方向に思考が動くのかがわからない。
事実を指摘しているだけだろう?
0112名無しさん@お腹いっぱい。2001/08/09(木) 20:58ID:???
>事実を指摘しているだけだろう?
やっぱり笑い所がわからんわ。独自のセンスとしかいいようがないね、君のは。
0113.2001/08/09(木) 21:01ID:???
>>112
俺はユーモアを提供しているわけではないし、君とはユーモアの嗜好依然に
ユーモアを解する能力について、俺にはよくわかった。だからもういい。
0114名無しさん@お腹いっぱい。2001/08/09(木) 21:04ID:???
やっぱ>>1が偉そうなのって夏厨だから?
0115.2001/08/09(木) 21:14ID:???
>>114
今すぐに君に理解できることなど期待していないが、
近い将来、俺と君との相対的な地位関係から、俺の態度が理解できることになると思う。
0116名無しさん@お腹いっぱい。2001/08/09(木) 21:19ID:???
>君とはユーモアの嗜好依然にユーモアを解する能力について、俺にはよくわかった。
今度は日本語として意味がわからん。
0117名無しさん@お腹いっぱい。2001/08/09(木) 21:20ID:???
>>114
そんなん最初からわかってることだろう(藁
0118.2001/08/09(木) 21:40ID:???
>>116
だいじょうぶだ。俺にはわかったから。
0119.2001/08/09(木) 21:46ID:???
Webプログラミングという大げさな板名に恥じない名人は他スレには多いのにも関わらず、
なぜこのスレッドには君らが軽んじるKENT氏を語ることすらできない奴ばかりなのか!
0120名無しさん@お腹いっぱい。2001/08/09(木) 21:47ID:???
>>118
本人だけがわかる言葉を書くための板はここじゃないぞ。
http://natto.2ch.net/denpa/index2.html
0121名無しさん@お腹いっぱい。2001/08/09(木) 21:51ID:???
>>119
そりゃ、スレ立てたのがお前で、主に活動してるのもお前だからだろうな。
テーマが焼き鳥だろうが帯状発疹だろうが、お前とじゃマトモに会話するなんて無理だよマジで。
0122名無しさん@お腹いっぱい。2001/08/09(木) 22:01ID:???
>>119
みんなボランティアでやってるわけじゃない。仮に、
>近い将来、俺と君との相対的な地位関係から、俺の態度が理解できることになると思う。
が本当になるとしても、そんな態度の悪いやつに労力を割いて教えることはない。
まあ、教える奴がいてもかまわないが、少なくとも俺は教えたくない。
0123.2001/08/09(木) 22:03ID:???
>>119
では見帰りを捧げますのでご教授ください。
0124名無しさん@お腹いっぱい。2001/08/09(木) 22:21ID:???
=============================終了=============================
0125名無しさん@お腹いっぱい。 2001/08/09(木) 23:11ID:???
01261072001/08/10(金) 06:06ID:???
ありがとうすぅ>>1さん 上手くいきました  (^O^
べんきょうして頑張ります!
0127名無しさん@お腹いっぱい。2001/08/10(金) 12:23ID:/eOrC7SM
KENTさんのスクリプトを my 使いまくりに改造したようなものは
どこかにないでしょうか?
0128 2001/08/10(金) 12:26ID:???
呆呆呆呆呆呆呆呆呆呆呆呆呆呆呆呆呆呆呆呆呆呆呆呆呆呆呆
れれれれれれれれれれれれれれれれれれれれれれれれれれれ
ててててててててててててててててててててててててててててててて
ままままままままままままままままままままままままままままままま
すすすすすすすすすすすすすすすすすすすすすすすすすすすすす
0129少し頑張った人2001/08/10(金) 12:33ID:???
面白いねこのスレ  ^^
0130名無しさん@お腹いっぱい。2001/08/10(金) 13:29ID:???
>>127
それはもう別物(w
0131.2001/08/10(金) 13:55ID:???
my使っただけで何か変わるのか?
冗長になるだけでは?
0132名無しさん@お腹いっぱい。 2001/08/10(金) 14:00ID:???
あなたソレ言葉の使い方間違えてます  w〜〜〜
そろそろウザいんで逝ってくれ

==========終了==========
0133名無しさん@お腹いっぱい。2001/08/10(金) 14:08ID:???
キミ人にもの聞く態度がなってないよ、一人っ子??
カエレ!!(・∀・)
0134.2001/08/10(金) 14:44ID:???
>>133
物を聞く態度があなたの満足のいくレベルに達したら、
私にKENT氏攻略法を授けてくださるのでしょうか。
0135名無しさん@お腹いっぱい。2001/08/10(金) 14:54ID:???
それは勿論ですよ、世の中は人と人が関わって展開してるんですから
貴方の人を挑発した物言いで、良い答えを得ようと言う方が奇特と言う
ものでしょう。
私はしがない職業PGで、PERLで大きなプログラムを組んだ事は有りませんが
(そもそもそう言う言語では有りませんね)初心者さんにはお答えできると思います。
C、VB、ASP、PERL を業務ベースで使っています。
0136名無しさん@お腹いっぱい。2001/08/10(金) 14:58ID:???
>まだ自作のBBSを作ったりしてローカルで
このソースをアップしろよ。1が現在どれぐらいの能力なのかがわかるだろ
それくらいできないような奴ではKENTは越えられないと思うが
0137名無しさん2001/08/10(金) 15:19ID:???
カエレ(・∀・)
カエレ(・∀・)
カエレ(・∀・)
0138名無しさん@お腹いっぱい。2001/08/10(金) 15:52ID:???
        / ⌒⌒ \
       /        ヽ
      /  | | | | | | | | |  ヽ
     /  [ ー]'-`[ー ]ヽ  ヽ  / ̄ ̄ ̄ ̄ ̄
     \/   、_ _,   ヽ /   |
       |      ヽ   |ノ   < 男が悪い
       ヽ    U    ' |     |
       |_/⌒_⌒\._ノ|     \_____
       .ヽ\|_|_|//
        ヽ、___, '|
0139名無しさん@お腹いっぱい。2001/08/10(金) 17:13ID:???
\あたたたたたたたっ!/
   ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄
      ∧ ∧       ∧_∧
     (,,゚Д゚)≡つ    (:;:;)3`#) ※
      |つ つつつつ =( :; )# | |      ←>>1
    〜.   | ≡つ   / /:; /∪※
      ∪ ∪      く__(_ゝ,,〃

                   ヽ l //
       ∧∧ ほぁたぁ!――*―――
     =  (   )∩       // | ヽ フベシッ
    ≡ (  /ノ ll     / /  |  ヽ
    = 〜  〈〃        /   |
 ,`. .´,ミ,くノ^ヽ ゝ ''
0140名無しさん@お腹いっぱい。2001/08/11(土) 01:32ID:19Fw1.Uw
http://isweb34.infoseek.co.jp/feminine/takoimo/
かかってこいうんこども
0141名無しさん@お腹いっぱい。2001/08/11(土) 04:13ID:???
hello world
0142名無しさん@お腹いっぱい。2001/08/11(土) 07:53ID:eDJ7axHE
っていうかさ、KENTさんのコードのどこが良いんだ?
別に下手だという気は無いけど並だと思うよ。

まぁ、すごいのはやっぱサポート力だろうね。
あと、モジュール使わずにちまちま頑張ってるとこね。


どっちも漏れはやる気になれんという点ですげーね。
0143名無しさん@お腹いっぱい。 2001/08/11(土) 08:02ID:???
いまだにPerl4なんですが〜なんてのが希に居る訳だから
モジュールやmyだらけには出来んのだろう。と思うよ。
まあ、サポート力と言えるけども。
馬鹿みたいな質問にも切れずに答えられるとか。
0144名無しさん@お腹いっぱい。2001/08/11(土) 12:18ID:???
おまえらkentのすごさをほんとわかってないな。
それ以前に、何のためのソフトウエアなのかなんて
考えたこと無い、典型的プログラムオタクばっかだろ?
彼は、perlつーか、ソフトウエア工学の知識は半端じゃないよ。
CPANにもモジュール提供してるしね。
kent.pmで検索してみ。
0145名無しさん@お腹いっぱい。2001/08/11(土) 13:58ID:???
Kent.pmって凄いな。
何をするモジュールなのか皆目見当がつかん(藁

# マジで検索しちまったじゃねぇかゴルァ!
0146名無しさん@お腹いっぱい。2001/08/11(土) 16:31ID:???
で、どうしてJAPU氏はCGIソースのhttp公開を恐れているんだい?
0147JAPU@傷付くことを恐れてちゃダメよ♪2001/08/11(土) 17:23ID:???
FTPのみで公開するってのに深い意味はありません。
前からそうしているので、ずっとそのままにしているだけ。
で、逆引きとかアドレスをチェックしているのは、礼儀知らずを排除するため。
014818才の芸能人2001/08/12(日) 00:16ID:6KogsX6I
◆綺麗なおねぇさんは好きですか?◆
http://www.futomomo.com/netidol/sister/megu/
◆アイドル画像秘宝館◆
http://www.futomomo.com/netidol/idolhappy/maki/

fdfesfewfe
0149名無しさん@お腹いっぱい。2001/08/12(日) 00:57ID:TrSLsWVY
> 彼は、perlつーか、ソフトウエア工学の知識は半端じゃないよ。
> CPANにもモジュール提供してるしね。
> kent.pmで検索してみ。

ワラタヨ
マジで
0150.2001/08/12(日) 22:53ID:???
この板の住人はなにかKENT氏に不満でもあるのですか?それとも嫉妬ですか?
数日書き込みを付き合いましたが、純粋にスクリプトを評価しているとは思えません。
0151名無しさん@お腹いっぱい。2001/08/12(日) 23:15ID:???
あまりレベルの高くない(use strict;が通らないとか)スクリプトを配布している点は多少不満。
でもperl4でも動くようにしてることとか、サポートについてはすごいと思う。
レス見た限りだとみんなそう言ってるし。
なんでまともなレスがつかないかについては1が悪い、以上。
0152.2001/08/12(日) 23:20ID:???
use strict;が通る通らないはわざとではないのでしょうか?
0153名無しさん@お腹いっぱい。2001/08/12(日) 23:27ID:???
わざとその様にする意味はあるんですか
0154名無しさん@お腹いっぱい。2001/08/12(日) 23:38ID:???
>>150
不満がないからレスがつかない。
嫉妬してないから叩きスレも立たない。
評価する気もないから評価もしない。

てか、いつから「KENT氏のスクリプトを評価する」スレになったんだ?
KENT氏を超えたいという1を応援しているレスばかりだが。
0155.2001/08/12(日) 23:44ID:???
>>153
Perlのバージョンによってはuse strict;が通らない書き方でないと動作しないと
聞きました。

>>154
>てか、いつから「KENT氏のスクリプトを評価する」スレになったんだ?
まず相手を正しく認めてからでないと勝てるものも勝てなくなります。
0156名無しさん@お腹いっぱい。2001/08/12(日) 23:46ID:???
>>155
ウザイ。氏ね。
0157名無しさん@お腹いっぱい。2001/08/12(日) 23:48ID:???
っていうか何に勝つつもりなの?
0158名無しさん@お腹いっぱい。2001/08/12(日) 23:50ID:???
>>1は一生Perl4でも使って引き篭もってるほうが世の中のためだ。
0159名無しさん@お腹いっぱい。2001/08/12(日) 23:55ID:???
というか今だに Perl4 を使ってる鯖が何処にあるんだ。
あってもごく少数だろう。
それならば Perl5 に合わせて作った方が良いと思うぞ。
0160名無しさん@お腹いっぱい。2001/08/12(日) 23:57ID:???
>>159
だって>>155みたいな事言うから(藁
0161.2001/08/13(月) 00:25ID:???
Perl4を作っているサーバが少数でも、使っているところがあるならフォローすべきです。
優れたWEBマスターは、HTML言語だってJavascriptだって、ネスケを使っているひとのことを考えて作っているはずです。
0162Crow2001/08/13(月) 00:28ID:???
じゃあさ、>>1さんが簡単なプログラムをここに書き込んでそれを
KENT氏と比較したり、推敲したりすればいいんじゃない?
0163Crow2001/08/13(月) 00:29ID:???
>>161
それならPerl4用とPerl5用を用意した方が賢いと思うよ。
でもKENT氏はそうしてないよね。
0164.2001/08/13(月) 00:30ID:???
私はKENT氏の簡単なBBSスクリプトを教科書に学んだので、比較も何もないのですが・・・。
0165名無しさん@お腹いっぱい。2001/08/13(月) 00:31ID:???
>Perl4を作っているサーバ
*作っている*サーバがあったら教えていただきたいものだ。
>HTML言語
HyperText Markup Language Language って初めて聞きました。

なんか腹立つ(藁
0166Crow2001/08/13(月) 00:34ID:???
>>164
いやいや、教科書にして学んだとしても全く同じプログラムにはならないでしょ?
(Perlでは特にね)
それに>>1さんの書くプログラムがKENT氏に似ているとしたら、
純粋に>>1さんのプログラムを評価して、それを検討して更なる飛躍が期待できるし、
同時にKENTさんのプログラムを具体的に評価することにもなるじゃない?
0167Crow2001/08/13(月) 00:39ID:???
例えばYYBBS(ちょっと古い(Ver2.81))のこんな記述がある

## --- 時間を取得
sub get_time {
$ENV{'TZ'} = "JST-9";
($sec,$min,$hour,$mday,$mon,$year,$wday,$d,$d) = localtime(time);
$year += 1900;
$mon++;
if ($mon < 10) { $mon = "0$mon"; }
if ($mday < 10) { $mday = "0$mday"; }
if ($hour < 10) { $hour = "0$hour"; }
if ($min < 10) { $min = "0$min"; }
if ($sec < 10) { $sec = "0$sec"; }
$week = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat') [$wday];

# 日時のフォーマット
$date = "$year\/$mon\/$mday\($week\) $hour\:$min\:$sec";
}

>>1さんならどう書く?
私も参考にしたいので「こんなのかけるぞ」というのがあったら(スレ違いかもしれませんけど)
どなた様か投稿どうぞ:-)
0168.2001/08/13(月) 00:44ID:???
sub get_time{
($sec, $min, $hour, $day, $mon, $year, $wday) = localtime(time);
@youbi =("Sun","Mon","Tue","Wed","Thu","Fri","Sat",);
$date = sprintf("%04d/%02d/%02d(%s) %02d:%02d",
 $year + 1900, $mon + 1, $day, $youbi[$wday],$hour, $min);
}
にします。
0169Crow2001/08/13(月) 00:56ID:???
だよね。わざわざ2桁にするのにif文使ったり、
localtimeでいらない変数まで読み込む必要もない。

それがプログラム上級者のいう「冗長さ」であり
「プログラムを見ても面白くない」っていう点だよね。

よっぽど>>1さんが書くプログラムの方が良い。

でもプログラム初心者が両方のプログラムを見たらKENTさんの方が理解しやすい。

だからKENTさんを"超える"というのがどう言う方向での意味なのか
(初心者に優しいプログラムなのか、プログラムの性能でKENT氏を超えるのか)
が重要ではないかと思うよ。
0170.2001/08/13(月) 00:56ID:???
sprintf("%04d〜",$year〜)で年月日をを数文字の数値にフォーマットに変える
ということは先日とほほのWWW入門で学びました。しかしほかに書き方を思いつきません。
0171名無しさん@お腹いっぱい。2001/08/13(月) 00:59ID:???
>>161
つーか IE とネスケだけに対応しておけば良いの?
スレ違いだけど少し疑問に思った。
0172名無しさん@お腹いっぱい。2001/08/13(月) 01:00ID:???
1の態度が随分変わったなぁ。
とりあえず、$ENV{TZ}を設定してなくてlocaltimeな時点で海外サーバでやばいよ。
俺ならgmtime(time+32400)かな。

my使いたいぞ。
0173.2001/08/13(月) 01:02ID:???
>>Crow氏
よっぽど、ということは何か足りないところがあるのでしょうか?
せひ補足をお願いします。
0174.2001/08/13(月) 01:09ID:???
>>171
IE、ネスケ以外を使う人は、画面表示に不都合があることを覚悟しているものと思っています。

>>172
海外サーバではまずい書き方なのですか。
できればmyを使った表現もご教授ください。
0175Crow2001/08/13(月) 01:11ID:???
>>172
そうそう、myの件もありますよね。プログラムが大きくなるほど変数が増える訳で、
その衝突を防ぐためのmy(で解釈合ってますか?)はKENT氏は使わない傾向にあるようですが。

>>173
いや、例えば

for(1..5){
Hello World!<br>
}
と言うプログラムを

print"Hello World!<br>Hello World!<br>Hello World!<br>Hello World!<br>Hello World!<br>";

と書く人は殆ど居ませんよね?
そして「えっ?こんな書きかたしてるの?」と思うと思います。

KENT氏の場合も同じで、>>167→>>168と比べれば
「こっちが良い」となるんですよ(私的意見ですけどね
0176Crow2001/08/13(月) 01:12ID:???
>>175
あやや・・
for(1..5){
Hello World!<br>
}
↓
for(1..5){
print"Hello World!<br>";
}
ですね。
0177名無しさん@お腹いっぱい。2001/08/13(月) 01:14ID:???
誤:IE、ネスケ以外を使う人は、画面表示に不都合があることを覚悟しているものと思っています。
正:IE以外を使う人は、画面表示に不都合があるかことを覚悟しているか、やむをえない事情があるものと思っています。
01781722001/08/13(月) 01:20ID:???
$ENV{TZ}をいじったり、gmtimeから直接出したりしないと、
外国にあるサーバでそのスクリプトを実行したときに現地時間で表示される。
(サーバは海外にあっても日本人向けのサービスとかならば違う可能性はある)

sub get_time{
 my ($sec, $min, $hour, $day, $mon, $year, $wday) = gmtime(time+32400);
 my $date = sprintf("%04d/%02d/%02d(%s) %02d:%02d",
  $year + 1900, $mon + 1, $day,
  ("Sun","Mon","Tue","Wed","Thu","Fri","Sat",)[$wday], $hour, $min);
 return $date;
}

とかかな。
っつーかこのサブルーチンって元はreturnしてないんじゃん・・・・・
やっぱり俺はKENTスクリプトいじりたくないと思った。
0179rand(5)2001/08/13(月) 01:27ID:???
わかった!アクセス数で勝ちたいのだな?(藁
0180名無しさん@お腹いっぱい。2001/08/13(月) 01:29ID:???
つーか Mozilla の存在は無視されてる模様。
っていうか見た目の表示さえ出来れば中身は伝わらなくても良いと思ってる雰囲気。

>>175
my 使うと安全だって聞いたが何が安全なのだろう。
実行速度は少し速くなるみたいだけど。
外から参照されないからその分違うのかな?

ちなみに、そのくらいのプログラムなら俺はヒアドキュメント使う。
0181.2001/08/13(月) 01:32ID:???
>>Crow氏、172氏
ご教授感謝します。
KENT氏のLIGHT BOARD最新版をDLしましたが、時刻表現は>>167のままでした。
172氏の曜日の配列の書き方、知らなかったです。参考になります。

returnについてですが、必須なのでしょうか。
print &get_time;
としたときに$dateがprintされるのはわかりますが、その必要がなければ
無駄な一行になるのでは?
01821722001/08/13(月) 01:43ID:???
>>181
&get_time;
ってやると $date に現在の日付が代入される、と言うプログラムと、
$date = &get_time();
ってやらないと $date に日付が代入されると言うプログラムでは、
見通しの利きやすさが全然違う。

初心者だとグローバル変数を使いまくってreturnしないようなプログラムが楽
って言う人も多いけど、プログラムを書くことに慣れれば慣れるほど
できるだけそんなことはしたくないと思うようになるはず。(一般的には)
0183Crow2001/08/13(月) 01:44ID:???
>>180
>my 使うと安全だって聞いたが何が安全なのだろう。
私も変数の衝突防止・・・としか知りませんね。どうなのでしょう?

>>181
サブルーチンだから戻り値があったほうがしっくりくるってことじゃないかな?
Cとかだと戻り値が必ず必要ですし。
あと>>161のプログラムに
my $date........
としてやった場合、サブルーチン外で print"$date"; としてやっても出力されなかったと思います。
01841722001/08/13(月) 01:51ID:???
>>180
myとlocalの比較ではmyの方が速いけど、myを使うのと使わないのだと、使わないほうが速いよ。
myを使わないプログラミングをしていると、

$hoge = "mona";
&subroutine();
print $hoge;
(間に2000行くらい)
sub subroutine{
$hoge = "giko";
}

ってプログラムがあったとき、 mona って表示されない。
明示的に $hoge を変更していないのに、いつのまにか変更されていると言う、
気づき難くて非常に困るバグの元だからmyを使った方がいいのではないかと。
01851722001/08/13(月) 01:54ID:???
>>183
サブルーチンの中で my $date; って宣言すると、$dateはそのサブルーチン内だけで有効な変数になる。
名前が同じなだけで、サブルーチンの外の$dateとは無関係な変数。
だから、外で print $date; ってやっても何も表示されないわけ。

そろそろ寝ていい?
0186Crow2001/08/13(月) 01:58ID:???
>>185
なるほど。ためになります。

そろそろ私も寝ます・・明日も早いので・・。
0187名無しさん@お腹いっぱい。2001/08/13(月) 02:31ID:???
KENT氏も進歩しているみたい。
YYBBS最新版をDLしてみたら、

sub get_time {
$ENV{'TZ'} = "JST-9";
$times = time;
($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime($times);
@week = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');

# 日時のフォーマット
$date = sprintf("%04d/%02d/%02d(%s) %02d:%02d",
$year+1900,$mon+1,$mday,$week[$wday],$hour,$min);
}

になっていた。
0188名無しさん@お腹いっぱい。2001/08/13(月) 02:52ID:???
しかしそこでmyはおろかlocalすら使わないあたり底が見えるな。
0189名無しさん@お腹いっぱい。2001/08/13(月) 03:23ID:???
話の腰を揉んですみませんが、KENT氏のサイトに逝けない……しくしく。
0190110,112,1162001/08/13(月) 03:37ID:???
あれ? なんかマトモなスレになってます?(w
んじゃ俺もマジレス。
俺ならそのKENT氏のスクリプト、こうしますね。
sub get_time {
  my ($min, $hour, $mday, $mon, $year, $wday) = (gmtime(time + 60 * 60 * 9))[1 .. 6];
  return sprintf("%04d/%02d/%02d(%s) %02d:%02d",
          $year + 1900, $mon + 1, $mday, ('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat')[$wday],
          $hour, $min);
}
■ このスレッドは過去ログ倉庫に格納されています