月宮あゆのPerl教室 Part.4

このエントリーをはてなブックマークに追加
562nobodyさん
tes
563nobodyさん:03/03/19 09:46 ID:???
> 削除人
乙〜
564nobodyさん:03/03/19 14:26 ID:???
おー!3げと。
565nobodyさん:03/03/19 14:26 ID:???
早く教えてほしいぽ ♥
566nobodyさん:03/03/19 14:28 ID:???
ワラタ メール公開してるし
567nobodyさん:03/03/19 14:28 ID:???
4なのかよ!!Part.4だし。なにいってんだ。
568nobodyさん:03/03/19 14:28 ID:???
まず自己紹介きぼん
569nobodyさん:03/03/19 14:29 ID:???
こっちはどうしたよ?
570nobodyさん:03/03/19 14:29 ID:???
      _ _
     〃┏━━ 、
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ ´ー` リ <  うぐぅ♪
  ((ニE/⌒ヾ∞"ヽ   \____________
    (こ)   ∞ |こ)
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    く__∞,ノ
    し' し'
571nobodyさん:03/03/19 14:29 ID:???
アフォ
572nobodyさん:03/03/19 14:29 ID:???
なんかそういう人形が大阪の食い物屋の店頭にあるよな。
573nobodyさん:03/03/19 14:30 ID:???
良スレの悪寒!!
574nobodyさん:03/03/19 14:30 ID:???
CGIってなんですか?なんかあちこちでCGIといえばperlとかCだとか言われてますけど
何の事かさっぱりわかりません。
575nobodyさん:03/03/19 14:30 ID:???
      _ _
     〃┏━━ 、
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ ´ー` リ <  COMMON GATEWAY INTERFACE
  ((ニE/⌒ヾ∞"ヽ   Httpサーバとプログラムを繋ぐためのインターフェース規格(?)
    (こ)   ∞ |こ)    CGIの条件とは
    |   ∞,|     ・そのサーバで実行できる形式である。
    |   ∞,|     ・標準入力/出力を扱える。
    |   ∞,|     ・環境変数を取得できる。
    |   ∞,|     なんだよ。
    |   ∞,|
    |   ∞,|     これさえ満たしていれば言語は問われないんだ。
    |   ∞,|     テキスト処理が得意なPerl君と高速で使える人が多いC君が
    |   ∞,|     主に使われてるよ。
    |   ∞,|    
    |   ∞,|     もちろん、PascalやLISP(?)、RUBYなどもOK。
    |   ∞,|     WIndowsNTがサーバならVBもつかえるんだよ。うぐぅ。
    |   ∞,|    \____________
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    く__∞,ノ
    し' し'
576nobodyさん:03/03/19 14:30 ID:???
で、できる
577nobodyさん:03/03/19 14:30 ID:???
上手な食い逃げの方法教えてください。
578nobodyさん:03/03/19 14:30 ID:???
      _ _
     〃┏━━ 、
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ ´ー` リ <  逃げる直前まで、「お金を払うよオーラ」を出すんだよ。
  ((ニE/⌒ヾ∞"ヽ  \____________
    (こ)   ∞ |こ)
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    |   ∞,|
    く__∞,ノ
    し' し'

579nobodyさん:03/03/19 14:31 ID:???
一行レスの時は胴体短くして下さい。
容量の無駄ですし。
580nobodyさん:03/03/19 14:31 ID:???
      _ _
     〃┏━━ 、
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ ´ー` リ <  了解です。
  ((ニE/⌒ヾ∞"ヽ  \____________
      ̄し'し'  ̄
581nobodyさん:03/03/19 14:31 ID:???
あんた、極端だな(笑)
582nobodyさん:03/03/19 14:32 ID:???
す、すげぇ・・・
マトモ過ぎるレスが返ってきた・・
583nobodyさん:03/03/19 14:32 ID:???
うぐぅ。もう学校の時間だよう。
どこに通ってるかって?秘密だよ♪

あゆがわかる簡単な質問なら答えるよ。
584nobodyさん:03/03/19 14:32 ID:???
うぐぅ。一人称は「ボク」だね。失敗失敗。
585nobodyさん:03/03/19 14:32 ID:???
あゆ萌えJAPUさんはキモいですか?
586nobodyさん:03/03/19 14:32 ID:???
 
587nobodyさん:03/03/19 14:32 ID:???
      _ _
     〃┏━━ 、
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ ´ー` リ < 何でも聞くべし。
  ((ニE/⌒ヾ∞"ヽ  \____________
      ̄し'し'  ̄
588nobodyさん:03/03/19 14:33 ID:???
{print;shift;{}{}shift;shift;map @hoge;white(-1){shift;shift;}}
589nobodyさん:03/03/19 14:33 ID:???
無限ループ。
590nobodyさん:03/03/19 14:33 ID:???
うぐぅ。
591nobodyさん:03/03/19 14:33 ID:???
whiteってどんな関数だよ。
592nobodyさん:03/03/19 14:34 ID:???
ぐは、whileじゃなかった・・・。無限ループ発言撤回。
593nobodyさん:03/03/19 14:34 ID:???
うぐぅ。 
594nobodyさん:03/03/19 14:34 ID:???
サーバーサイドのエロゲやりたい
595nobodyさん:03/03/19 14:34 ID:???
Cをとっても意識したつくりと思われるperlですが、
どうしてelsif,last,redoなんですか
596nobodyさん:03/03/19 14:34 ID:???
      _ _
     〃┏━━ 、
     |       ) 
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ ´ー` リ <  パクったんじゃなくて意識しただけだからだよ。
  ((ニE/⌒ヾ∞"ヽ    自分がこっちの方がいいと思ったら変更すればいい。
    (こ)   ∞ |こ)   Perlは効率を優先した言語だからね。
    く__∞,ノ     else ifとするより2文字稼げる?
    し' し'        多分コンパイルの時点で最適化されるのかな?
                \____________
597nobodyさん:03/03/19 14:35 ID:???
ムッシュかまやつに似てる、そっくりだ
ttp://www.webk.co.jp/singer/image.jpg
598nobodyさん:03/03/19 14:35 ID:???
Perlで記述したCGIの、状況に応じた各種テスト方法の
オススメを一通り教えてホスイ マヂで
(逆でもOK、 :このテスト方法はこういうときに便利)

モジュールいろいろ豊富なのはイイんですが、
オレみたいなヘボーンPGはどれを選んで良いのか、
上手い答えがなかなか出せませんので、参考にさせてください
599nobodyさん:03/03/19 14:35 ID:???
      _ _
     〃┏━━ 、
     |       ) 
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ ´ー` リ <  基本だけどテストケースをしっかり作ってホワイトボックステスト。
  ((ニE/⌒ヾ∞"ヽ    職業プログラマじゃないからあんまり詳しくないよ。うぐぅ。
    (こ)   ∞ |こ)   
    く__∞,ノ     
    し' し'        
                \____________
600nobodyさん:03/03/19 14:35 ID:???
CでCGI組みたいんだけど、なんか参考になる本かページないですか?
主に使われてるっつー割にPerlと違って(CGIの)専門書見かけないのはなんででしょ?
601nobodyさん:03/03/19 14:35 ID:???
うぐぅ、名前とアドレス欄間違えた‥‥アフォだw
602nobodyさん:03/03/19 14:36 ID:???
      _ _
     〃┏━━ 、
     |       ) 
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ ´ー` リ <  この辺なんてどうでしょ? 他にもあったと思うから探してみます。うぐぅ。
  ((ニE/⌒ヾ∞"ヽ   \http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/
    (こ)   ∞ |こ)    \____________
    く__∞,ノ     
    し' し'        
603nobodyさん:03/03/19 14:36 ID:???
ありがとうございます。
たしかにelsifもlastもredoも文字数は少ないですね
604nobodyさん:03/03/19 14:36 ID:???
      _ _
     〃┏━━ 、
  >−       ) 
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ ´ー` リ <  変なこと言うけどPerl/CGIの入門書。
  ((ニE/⌒ヾ∞"ヽ    上にも書いたけどCGIはある条件さえ満たせば言語は問われないんだ。
    (こ)   ∞ |こ)   無理してCでの入門書を探すより腐るほど出てる詳しいPerlでの本の方が参考になるよ。
    く__∞,ノ     上にも書いたけどPerlはCとかなり似ているから結構読めるよ。
    し' し'        
               暇だから簡単にまとめておくね。

               POSTの場合、データは標準入力に入る。
               GETの場合、データは環境変数QUERY_STRINGに入る。
               リモートホストなどのステータスは環境変数に入る。
               出力は標準出力に対して行う。
               出力の前にprintf("CONTENT-TYPE: text/html\r\nr\r\n");を忘れないでね。


               うぐぅ。あんまり祐一の役にたてなかった気がするよぉ。
605nobodyさん:03/03/19 14:36 ID:???
>主に使われてるっつー割にPerlと違って(CGIの)専門書見かけないのはなんででしょ?

(1) CでCGIを組めるサーバは一般人用にはあまりなく、従って売れ行きが期待できない
(2) CGIは結局引数というか、動作条件を環境変数から得てテキスト(HTML)を吐く
ある意味ごく普通のプログラムが基本である

あたりかな。
606nobodyさん:03/03/19 14:36 ID:???
タイミング良いね。
607nobodyさん:03/03/19 14:36 ID:???
追加
      _ _
     〃┏━━ 、
     |       ) 
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ ´ー` リ <  Perl >>>>>>>>>>>>>>>>>>> Cだからだよ。
  ((ニE/⌒ヾ∞"ヽ    可変長のデータ扱うことが多かったり文字列を分割することもしばしば。
    (こ)   ∞ |こ)   言語仕様は妙だけどテキスト処理に強いPerlの方が簡単にかけるんだ。
    く__∞,ノ     けど、その代償は大きくて処理速度とシステム負荷は大きい。
    し' し'       それで、高速かつふざけた量のデータを処理する場合にはやむなくCを使うんだ。多分。 

               それと、Cがコンパイル言語だと言うことも問題だよ。
               CでCGIを組んだ場合、サーバで動くコードにコンパイルしなくちゃいけないんだ。
               (たまに.cを.cgiに変えたのに動きません。ってかわいい初心者がいるね。)
               でも、無料または一般用プロバイダが提供するサーバでGCC(CC Cコンパイラ)を
               提供しているところはtok2しかないよ。うぐぅ。
               そもそもtelnetが使えるところも少ないんだよ。
               ローカルでサーバと同じOSを使えばいいんだけどスマートじゃないよね。
               (クロスコンパイルという手もある。)
               その点Perlはインタプリタ(正確には違う。)。ソース互換は大抵の場合保証されているからお手軽なんだ。
               C/CGIの教科書を書こうとすると、
               「サーバ上でgccを使うってどうやるんですか?」
               って質問が殺到するから書きにくいのかもね。
608nobodyさん:03/03/19 14:37 ID:???
色々と回答ありがとうございました。

標準入力/出力と環境変数の取得方法(のページにしっかりあった)さえ知ってれば
普通に組めそうれすね(当方、Perlはそこそこ書けるのでした)

本がないのは結局、CのCGIが一般向けじゃないってことですかね。
609nobodyさん:03/03/19 14:37 ID:???
Perlが正確にはインタプリタじゃないってのはどいうこと?
610nobodyさん:03/03/19 14:37 ID:???
これも微妙に違うような気もするけど、
ttp://www.aifis.ne.jp/heat/assistant/perl-intro.html
とか。

perldoc perlrunとかやるといきなり「Perlインタプリタ」って文字が出てきて鬱。
611nobodyさん:03/03/19 14:37 ID:???
XREA( http://www.xrea.com/jp/ )もgcc逝けるよ。SSHで。
612nobodyさん:03/03/19 14:37 ID:???
      _ _
     〃┏━━ 、
     |       ) 
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ ´ー` リ <  ソースは忘れたけど、スクリプト実行時にコンパイルしてその後に実行してるんだって。
  ((ニE/⌒ヾ∞"ヽ    怖い人たちにたたかれたらやだから思わせぶりな書き方にしちゃったよぉ。
    (こ)   ∞ |こ)   ごめんなさい。
    く__∞,ノ         し' し'        案外あるんだね。gcc OKのところ。
613nobodyさん:03/03/19 14:38 ID:???
たしかにかまやつに似ているなぁ(笑)
614nobodyさん:03/03/19 14:38 ID:???
正規表現の最後のoってあるじゃん。
m/foo/bar/o <-これ
これとか、コンパイルする部分とその場で実行する部分があることを感じさせてくれるよね。
615nobodyさん:03/03/19 14:38 ID:???
なるほど、一つ賢くなったよ!
616nobodyさん:03/03/19 14:38 ID:???
     ____                        
    /∵∴∵∴\
   /∵∴∵∴∵∴\
  /∵∴<・>∴∴.<・>|    
  |∵∵∵/ ○\∵|     
  |∵∵ /三 | 三| |  / ̄ ̄ ̄ ̄
  |∵∵ | __|__ | |< うるせー馬鹿!
   \∵ |  === .|/  \____
     \|___/
   ______.ノ       (⌒)
  //::::::::|-、 ,-/::::::ノ ~.レ-r┐
/ /:::::::::::|  /:::::ノ__ | .| ト、
| /:::::::::::::::| 〈 ̄   `-Lλ_レ′
レ::::::::::::::::::|/:
617nobodyさん:03/03/19 14:38 ID:???
      _ _
     〃┏━━ 、
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ TーT リ < うぐぅ。
  ((ニE/⌒ヾ∞"ヽ    
    (こ)   ∞ |こ)   
    く__∞,ノ     
    し' し'        
618nobodyさん:03/03/19 14:39 ID:???
      _ _
     〃┏━━ 、
     |       ) 
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ ´ー` リ <    ((ニE/⌒ヾ∞"ヽ   \却下。うぐぅ。
    (こ)   ∞ |こ)   
    く__∞,ノ     
    し' し'        
619nobodyさん:03/03/19 14:40 ID:???
それは「変数展開は最初に実行したときのみ」って意味で、
コンパイル時に評価されるわけじゃないでしょ。

コンパイル時に実行/評価されるのはBEGINブロックね。
for (0 .. 9){
BEGIN{ print "begin\n" }
print "loop: $_\n";
}
620nobodyさん:03/03/19 14:40 ID:???
FORTRANやCOBOLでもCGIって組めますか?
621nobodyさん:03/03/19 14:40 ID:???
      _ _
     〃┏━━ 、
     |       ) 
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ ´ー` リ <  却下されちゃったから引き続きボクだよぉ。
  ((ニE/⌒ヾ∞"ヽ    はっきり言ってFORTRANもCOBOLも使ったこと無いよ〜。
    (こ)   ∞ |こ)   上の方で書いたけど、
    く__∞,ノ     
    し' し'        ・サーバで動く形式(ファイルを叩くだけで実行出来ること。 RUNの必要なBASICなどは不可。)
                ・標準入出力が扱える。
                ・環境変数が扱える

                この3点が可能ならCGIとして使えるよ。
                でも、標準入出力や環境変数って言う概念のないOSではこの限りじゃないよ。
                FORTRANなら何となく出来そうだよね。

622nobodyさん:03/03/19 14:40 ID:???
期待age
623nobodyさん:03/03/19 14:40 ID:???
packageってどういう時に使えばいいんですか?
いまいちよくわからない・・・
624nobodyさん:03/03/19 14:41 ID:???
#!/usr/local/bin/manko

/*このスクリプトは画期的な新言語「MANKO」を使用しています*/

%doutei = @;

@ key ->> .*

whitebase(%doutei){printrash "%doutei";}

/*最後の処理*/

lastescape;

sub manko{

$kekeke = 1;

hyperif($kekeke){print "ギコハハハ";}

}

__DEAD__
625nobodyさん:03/03/19 14:41 ID:???
      _ _
     〃┏━━ 、
     |       ) 
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ ´ー` リ <  基本的にはネームスペースの分離だと思うよ。
  ((ニE/⌒ヾ∞"ヽ    ネームスペースってわかるかな?名前空間とも書いてあるね。C++とかは。
    (こ)   ∞ |こ)   例えばtest.plをrequireするnamespace.plがあるとするよ。
    く__∞,ノ     test.plにはayuayu()っていうサブルーチンがあるとすると、
     し' し'       namespace.plではayuayu()と言うサブルーチンは定義出来ないんだ。
               プログラムはプログラマがどっちのayuayu()を呼び出したいかわからないからね。
               と、言うことは、人が作ったライブラリを使うときには細心の注意が必要。面倒だよぉ。

               そこで登場するのがパッケージ。これはある名前群をグループ化出来るんだ。

               例えば、ayuayu()がtsukimiyaと言うパッケージ内で宣言されたとすると、それはtsukimiya::ayuayu()
               となって、何もないayuayu()とは区別されるんだ(何もないはMain::に属していることになるよ。たしか。)。
               こうすれば、他のライブラリのことは全く気にせず名前を付けられるようになるよね。
               もちろん、パッケージ名は他とだぶらないようにする必要があるけどね。

               ところで、変数とサブルーチンをグループ化する機能ってどこかで見たことない?
               そう、C++などのクラスだよ。
               Perlのクラスはパッケージを使って実現されてるんだ。 
               でも、そのおかげでPerlのクラスはわかりにくい・・・って言うのがボクの私論だよ。            
626nobodyさん:03/03/19 14:41 ID:???
デフォルトパッケージはMainじゃなくmainな。
ついでにmainは省略できるので$::fooとか ::bar('arg')とかできる。

つーか知らないんなら調べてから書け。もしかして猫と同一人物か?
627nobodyさん:03/03/19 14:41 ID:???
大文字小文字で怒るなよ・・・重箱?
628nobodyさん:03/03/19 14:41 ID:???
       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄   
       |         
       | うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!
       | うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!
       | うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!
       | うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!
       | うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!
       | うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!
       | うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!
       | うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!
   ∧ ∧ |/\_________                   
   (,,゚Д゚)____.
   (つ/~ ※ ※ \
   /※ ※ ※ ※ \
629nobodyさん:03/03/19 14:42 ID:???
Perlの話ですので非Perl使いは黙ってててください。
630nobodyさん:03/03/19 14:42 ID:???
なるほど・・・。
勉強になりました。
ありがとー。
631nobodyさん:03/03/19 14:42 ID:???
突っかかりたい年頃なんだよ
相手にするな
632nobodyさん:03/03/19 14:42 ID:???
顔がののたんです
633nobodyさん:03/03/19 14:42 ID:???
良質スレあげ

ちと質問なんだけど、SSIでPerlスクリプトを叩くとき、
スクリプト自体の絶対アドレスってわからんのかな?
環境変数にはHTMLのがはいってるし
634nobodyさん:03/03/19 14:43 ID:???
$0 とかでわからなかったっけ?
635nobodyさん:03/03/19 14:43 ID:???
一緒にすんな!!ボケ
636nobodyさん:03/03/19 14:43 ID:???
$0 だとファイル名になってしまう・・・
やはりTelnetでPWDして調べるしかないのかの
637nobodyさん:03/03/19 14:43 ID:???
$pwd=`/bin/pwd`;
638nobodyさん:03/03/19 14:43 ID:???
もしコマンドが許されてなくて が駄目なら Cwd.pm なんかが
ディレクトリを一個一個上がっていって調べてくれるらしいですが・・・
詳細は知らぬ。それと SSI は知らぬ。スマソ
639nobodyさん:03/03/19 14:43 ID:???
こんなんでいいかな?

my $path = ($ENV{SCRIPT_NAME} =~ /(.+\/)[^\/]+/)[0] . $ENV{_};
$path =~ s!/\./!/!g;

print $path;
640nobodyさん:03/03/19 14:44 ID:???
サンクスコ。うまくいったよ。というか標準ライブラリ覚えてなさ過ぎだな。

,80
環境変数もコマンドも変な値返してくるサーバーだったのね。

どうでもいいけどあゆあゆどこいったのかな?
変な厨房が追い出したとか書いてあったけど
641nobodyさん:03/03/19 14:44 ID:???
オールラウンドプログラミングvol.3
 C/C++300の技
技術評論社 ISBM4-7741-1312-3
1980+税

青緑っぽい本。
わかりやすい本だとは言わないけど、CでCGIをやる場合の
サンプルコードとかが載ってるから、参考にする程度ならいいかも。
642nobodyさん:03/03/19 14:44 ID:???
      _ _
     〃┏━━ 、
     |       ) 
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ ´ー` リ < http://www.gedoh.org/aki/2ch/current/bbs/
  ((ニE/⌒ヾ∞"ヽ   \みんなが一番よく知っているサイトのC言語製CGIだよ
    (こ)   ∞ |こ)   
    く__∞,ノ     
     し' し'       
               
              
643nobodyさん:03/03/19 14:44 ID:???
read.c だけ見たけど、
初期とずいぶん変わったねー
644nobodyさん:03/03/19 14:44 ID:???
はあゆにジェラシー(藁
645nobodyさん:03/03/19 14:44 ID:???
うぐぅ・・・祐一くんおどかさないでよ・・・
646nobodyさん:03/03/19 14:45 ID:???
      _ _
     〃┏━━ 、
     |       ) 
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ ゚∀゚ リ  < うーーーーーーーーーーぐぅぅぅぅぅ
  ((ニE/⌒ヾ∞"ヽ   \
    (こ)   ∞ |こ)   
    く__∞,ノ     
     し' し'       
647nobodyさん:03/03/19 14:45 ID:???
648nobodyさん:03/03/19 14:45 ID:???
      _ _
     〃┏━━ 、
     |       ) 
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ;゚∀゚ リ  < うぐぅ、ネタだけどありがとう
      し' し'       
649nobodyさん:03/03/19 14:45 ID:???
japu逝ってヨシ
650nobodyさん:03/03/19 14:45 ID:???
なんか最近顔が変わった?
651nobodyさん:03/03/19 14:46 ID:???
      _ _
     〃┏━━ 、
     |       ) 
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ ゚∀゚ リ  < うーーーーーーーーーーぐぅぅぅぅぅ
  ((ニE/⌒ヾ∞"ヽ   \
    (こ)   ∞ |こ)   
    く__∞,ノ     
     し' し'   
652nobodyさん:03/03/19 14:46 ID:???
      _ _
     〃┏━━ 、
     |       ) 
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ ゚∀゚ リ  < ウグゥ━━━━━━(゚∀゚)━━━━━━ !!!!!
  ((ニE/⌒ヾ∞"ヽ   \
    (こ)   ∞ |こ)   
    く__∞,ノ     
     し' し'   
653nobodyさん:03/03/19 14:46 ID:???
      _ _
     〃┏━━ 、
     |       ) 
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ;゚∀゚ リ  < うぐぅ、ボクは別人だよぅ
      し' し'       
654nobodyさん:03/03/19 14:47 ID:???
月宮先生は、Perl歴何年ですか?
何冊Perlの本を持っていますか?
Perl使えるようになるポイントは何ですか?
655nobodyさん:03/03/19 14:47 ID:???
      _ _
     〃┏━━ 、
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ ´ー` リ < ケント・パイプカットとつくろう!PerlでCGI。これ一冊で十分。
  ((ニE/⌒ヾ∞"ヽ   \____________
    (こ)   ∞ |こ)
    く__∞,ノ
    し' し'



656nobodyさん:03/03/19 14:47 ID:???
背中にヘリコプターのハネ付けてるのですか?
657nobodyさん:03/03/19 14:47 ID:???
Perlを習うための心構えとは? どうぞ。
658nobodyさん:03/03/19 14:47 ID:???
      _ _
     〃┏━━ 、
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ ´ー` リ < あくまでこれは方言だと心得るべし。
  ((ニE/⌒ヾ∞"ヽ   気がついたら「ハッシュと正規表現無いと死ぬ」みたいなプログラマはダメだよ〜
    (こ)   ∞ |こ)  \____________
    く__∞,ノ
    し' し'
659nobodyさん:03/03/19 14:47 ID:???
でも便利なんだよな・・・。
660nobodyさん:03/03/19 14:48 ID:???
ハッシュと正規表現無いと死ぬ〜
661nobodyさん:03/03/19 14:48 ID:???
★が目に付くなー ★が チカチカイライラ・・・
662nobodyさん:03/03/19 14:48 ID:???
俺もキャップ欲しい
663nobodyさん:03/03/19 14:48 ID:???
てへ
664nobodyさん:03/03/19 14:48 ID:???
うるせーバカ
665nobodyさん:03/03/19 14:49 ID:???
白星なのに怒られたよあうあうあ〜
666nobodyさん:03/03/19 14:49 ID:???
Perlを習得するには何が必要ですか?
667nobodyさん:03/03/19 14:49 ID:???
Kentサマへの崇拝
668nobodyさん:03/03/19 14:49 ID:???
      _ _
     〃┏━━ 、
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ ´ー` リ < OSとPerl処理系とエディタ(うぐぅ、あたりまえだよ〜)。
  ((ニE/⌒ヾ∞"ヽ   後、参考書は一冊買っておいた方がいいよ〜。
    (こ)   ∞ |こ)  すぐわかるPerlがおすすめ。
    く__∞,ノ    でも、オブジェクト指向とかパッケージには触れてないから注意。
    し' し'       CGIは書けてもここの話には付いていけないよ〜うぐぅ。
              \____________
669nobodyさん:03/03/19 14:49 ID:???
いよぅ!かまやつ!
むっしゅむらむら
670nobodyさん:03/03/19 14:49 ID:???
Perl神の降臨を待つのみです。 さあ、祈るのです。
671nobodyさん:03/03/19 14:50 ID:???
ヘリコプターさん、
http://www2.gihyo.co.jp/books/bookinfo.asp?ID=621
これですね。その本。
KENTの本はどうですか?
CGIは書くですか? PerlでCGIとして動作するプログラムを
書くのではないのですか?
672nobodyさん:03/03/19 14:50 ID:???
ヘリコプターをなぜつけているのですか?
673nobodyさん:03/03/19 14:50 ID:???
for($i=0;$i<50000;$i++){
&openfile($file); # openfile は $file を開いて @in に代入する関数
foreach(@in){
s/a//g;
}
}

これでね、$file を10KB と 100KB のものにした場合、なぜか10KB のものの
ほうが処理時間がかかっちゃうんだけどこの理由わかりる?
674nobodyさん:03/03/19 14:50 ID:???
      _ _
     〃┏━━ 、
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ ´ー` リ < 今回は自分の発想を大切にしようと思い、掲示板とかの作り方に関する本は読んでないよ。ボク。
  ((ニE/⌒ヾ∞"ヽ   唯一読んだのが「すぐわかる」。
    (こ)   ∞ |こ)  他の言語本と比べてもかなりいい本なので大推薦したの。
    く__∞,ノ    
    し' し'      正解。PerlでCGIというインターフェースに則ったプログラムを書くんだよ。
              後、あゆ、ヘリコプターじゃないもん。
              \____________
675nobodyさん:03/03/19 14:50 ID:???
      _ _
     〃┏━━ 、
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ ´ー` リ <後、ムッシュかまやつでもウド君でもないもん!
  ((ニE/⌒ヾ∞"ヽ   
    (こ)   ∞ |こ)
    く__∞,ノ    
    し' し'      
              
              \____________
676nobodyさん:03/03/19 14:50 ID:???
        ||
        ||
      _||
     〃┏━━ 、
    | ┃ メ  |
    | ┃ | |
    | ┃ テ  |
    | ┃ ル  |
     |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ ´_ゝ` リ < ウグググググゥゥゥ....
  ((ニE/⌒ヾ∞"ヽ   \____________
    (こ)  †  |こ)
   《《く__∞,ノ
     |O| |O|
     |O| |O|
     |O| |O|
     |O| |O|
     |O| |O|
     し' し'      
677nobodyさん:03/03/19 14:51 ID:???
ワラタ
678nobodyさん:03/03/19 14:51 ID:???
age
679nobodyさん:03/03/19 14:51 ID:???
10kbのファイルは1万行で100kbのファイルは1行とか?
680nobodyさん:03/03/19 14:51 ID:???
2ちゃんねらーの力で子供達を救おうよ(連日連夜 祭り開催中!)
何処の板から来たかを明記してくれると、みんなのやる気が上がります!
【クリック】 押してみっかなPart2【クリック】http://live.2ch.net/test/read.cgi/festival/1015607977/l50
681nobodyさん:03/03/19 14:51 ID:???
目障りだな。規制以来出すか。
682nobodyさん:03/03/19 14:51 ID:???
今朝の13話、話がよく分からなかったのですが。。
683nobodyさん:03/03/19 14:51 ID:???
       _ _
      〃┏━━ 、
      |  ノノソハ)))_ 
    /リリ ´ー`)リ/\ うぐぅ
   /| ̄ ̄ ̄ ̄ ̄|\/
     |愛媛みかん|/
684nobodyさん:03/03/19 14:52 ID:???
採用
685nobodyさん:03/03/19 14:52 ID:???
    ほれ、テンプレ
\____  ______/
             ∨
_______ _   ボコッ。
____ 〃┏━━ 、 _γ⌒⌒ヽ、
____. |  ノノソハ)))ヾ \ノハ)ヽ))   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
___(\リリ;´Д`)リ#]つ)○);´Д`) <  痛いですぅ〜。
___(ニE( #]つo"/ ⊂[||L[X⊂[||)   \________
___∠__∞__/    く7ココココヘゝ
___ し' (_f)    (゚_(゚_)
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
686nobodyさん:03/03/19 14:52 ID:???
AA荒らしはこちらでどうぞ
http://wow.bbspink.com/leaf/
687nobodyさん:03/03/19 14:52 ID:???
          __
        //´ ̄ ヽ        / ̄ ̄ ̄ ̄ ̄
          i ノリノ)))〉       |
     , '^ ーノl(l!゚ ヮ゚ノリ‐' ヽ     < 嫌っ
   ノ , リノjjノ'(.II 中.II)jルjソi      |
  ('"´   "^く 中|   ノ     \_____
    `        じ'フ
688nobodyさん:03/03/19 14:52 ID:???
奇跡でみずほタンを何とかしてください
689nobodyさん:03/03/19 14:52 ID:???
       _ _
      〃┏━━ 、
      |  ノノソハ)))_  Perlじゃむりだよぉ
    /リリ ´ー`)リ/\ うぐぅ
   /| ̄ ̄ ̄ ̄ ̄|\/
     |愛媛みかん|/
690nobodyさん:03/03/19 14:53 ID:???
age
691nobodyさん:03/03/19 14:53 ID:???
ペーペーなんですが、サルでもわかる参考書教えてください。
692nobodyさん:03/03/19 14:53 ID:???
【Perl,CGI】参考書籍 第2版
ttp://pc.2ch.net/test/read.cgi/php/988809842/
693nobodyさん:03/03/19 14:53 ID:???
うぐぅ。過去ログ読んで酔う。
694nobodyさん:03/03/19 14:53 ID:???
ありがとござました
695nobodyさん:03/03/19 14:53 ID:???

このスレの発展を祈ってバンザーイ♪

http://homepage2.nifty.com/satp/imgboard/img-box/img20020418205910.gif
696nobodyさん:03/03/19 14:54 ID:???
うぐぅさん、厨な質問をきいていただけますか?
697nobodyさん:03/03/19 14:54 ID:???
あげ
698nobodyさん:03/03/19 14:54 ID:???
ほぜん
699nobodyさん:03/03/19 14:54 ID:???
<html><head><title>KANONの魅力</title></head>
<body>すべての始まりは秋子さん<br>
<img src=Akiko.jpg><br>そして伝説が始まる…
</body></html>
700nobodyさん:03/03/19 14:54 ID:???
チェックの結果は以下のとおりです。
HTML4.01 Transitional としてチェックしました。
8個のエラーがありました。このHTMLは 1点です。タグが 6種類 7組使われています。

先頭の数字はエラーのおおまかな重要度を 0〜9 で示しています(減点数ではありません)。少ない数字は軽く、9 になるほど致命的です。0 は減点対象外のごく軽度のエラーで (グレイのかっこつき) でメッセージされています。

8: line 1: 最初の記述が DOCTYPE宣言ではありません。 → 解説 2
1: line 1: <HTML> には LANG 属性を指定するようにしましょう。 → 解説 110
0: line 1: (<HEAD>〜</HEAD> 内に <LINK REV="MADE" HREF="mailto:〜"> が含まれていません。) → 解説 113
0: line 1: (<HEAD>〜</HEAD> 内に <LINK REL="NEXT" HREF="〜"> などのナヴィゲーション用のリンクが含まれていません。) → 解説 114
4: line 1: <HEAD>〜</HEAD> 内に <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="〜"> が含まれていません。 → 解説 117
0: line 3: (<IMG> の SRC の属性値 `Akiko.jpg` が引用符で囲まれていません。) → 解説 92
6: line 3: <IMG> には ALT 属性が必要です。 → 解説 82
0: line 3: (<IMG> には WIDTH と HEIGHT 属性を指定するようにしましょう。) → 解説 165
701nobodyさん:03/03/19 14:54 ID:???
あゆがいねえー
702nobodyさん:03/03/19 14:55 ID:???
      _ _
     〃┏━━ 、
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ ´ー` リ <  帰ってきた
  ((ニE/⌒ヾ∞"ヽ   \____________
    (こ)   ∞ |こ)
    く__∞,ノ
    し' し'
703nobodyさん:03/03/19 14:55 ID:???
(=゚ω゚)ノぃょぅ
704nobodyさん:03/03/19 14:55 ID:???
久しぶりに来てみた。
705nobodyさん:03/03/19 14:55 ID:???
706nobodyさん:03/03/19 14:55 ID:???
ネットの好きな人私たちと、ビジネスを!!!!
一般の会社の流通コストの部分を参加者に還元をすることにより成り立つ
ネットワークビジネスは、何人かの識者が本などで発言しているのを読ん
でみると、人間的かつ将来有効なシステムだと感じます。
実際、有名な大会社でも参入しています。
コンサルタント、マーケティングのプロの中のプロである船井幸雄氏も、
ネットワークビジネスとそれに携わる個人にすばらしい可能性を見出して
います。 興味のある人には、ぜひ参加して一緒にやってみましょう。
以下のホームページでの説明も御覧ください。
http://ailove22.fc2web.com/lpd/index.html
[email protected]


707nobodyさん:03/03/19 14:55 ID:???
perlのCGIにhttpさせるやり方教えてください。
708nobodyさん:03/03/19 14:56 ID:???
use LWP::Simple;

or

use LWP::UserAgent;
709nobodyさん:03/03/19 14:56 ID:???
さん
ありがとうございます。まだ意味がわかりませんが
その言葉で検索かけてみます。
710nobodyさん:03/03/19 14:56 ID:???
httpって何だろうと思ったが、httpを使った通信ですか。
711nobodyさん:03/03/19 14:56 ID:???
懐かしいスレがあがってますな。うぐぅ。
712nobodyさん:03/03/19 14:56 ID:???
月宮さーん
がんばってね。
713nobodyさん:03/03/19 14:57 ID:???
うにゅ
714nobodyさん:03/03/19 14:57 ID:???
age
715nobodyさん:03/03/19 14:57 ID:???
perlについての質問です。実行するとたとえばユーザー名、パスワードを送信してくれる
プログラムを作りたいのですが、どのようなライブラリ、関数を使えばよいのでしょうか?
キーワードだけでも教えてください、お願いします。
716nobodyさん:03/03/19 14:57 ID:???
ネタスレに書くなよおめー。
それと質問が意味不明だ。
717nobodyさん:03/03/19 14:57 ID:???
s
718nobodyさん:03/03/19 14:57 ID:???
asdkasp
719nobodyさん:03/03/19 14:58 ID:???
さいならっきょ
720nobodyさん:03/03/19 14:58 ID:???
もう終わりですか?
721nobodyさん:03/03/19 14:58 ID:???
相手次第。ネットワーク越しかい?
722nobodyさん:03/03/19 14:58 ID:???
メールなら sendmail で検索して調べる
パスワードをランダムで生成する

@letters = ("0" .. "9", "a" .. "z", "A" .. "Z");
srand;

$password = "";

until(length $password == 8){
    $password .= $letters[rand ($#letters + 1)];
}
723nobodyさん:03/03/19 14:58 ID:???
$password .= $letters[int(rand ($#letters + 1))];
724nobodyさん:03/03/19 14:59 ID:???
psdfps
725nobodyさん:03/03/19 14:59 ID:???
test
726nobodyさん:03/03/19 14:59 ID:???
testestestestest
727nobodyさん:03/03/19 14:59 ID:???
testing....
728nobodyさん:03/03/19 15:00 ID:???
sexing
729nobodyさん:03/03/19 15:00 ID:???
homosexual
730nobodyさん:03/03/19 15:00 ID:???
SEX
731nobodyさん:03/03/19 15:00 ID:???
sex-siyo-yo
732nobodyさん:03/03/19 15:00 ID:???
なんだこの厨房は。
733nobodyさん:03/03/19 15:01 ID:???
こいつは一体何がしたいんだ。
734nobodyさん:03/03/19 15:01 ID:???
       -‐- 、
     ,' /二二 ヽ/⌒l     ___________
      i イノノノ))))〉=ヲ   < の答えがわかりません。
      ! (l| i]  i] ||  /    |
  (\ ノノノlゝ"フノ!! /   
  (∃/ヽ ^||iii》, /    
   ( ゝ 》⌒)中  |        
  [ ̄「 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
  || ̄||fZZZ7⌒)⌒ヾゝ,. ̄`||
  ||  ||ニ:Iニ/_7ニヒコ    ||
  ||  ||| ||/:::::/ ||\:::ヽ   ||
  ||  ||| |に~⌒).|| (⌒”)  ||
735nobodyさん:03/03/19 15:01 ID:???
ボクが乗っ取っちゃおうかな
736nobodyさん:03/03/19 15:01 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ
 (ニE(#つo⊂#)

乗っ取ることにしちゃったよ。
本当にゆっくりのペースでボクといっしょに勉強していこうね。
実はボクもまだまだ初心者なんだけどね。。
「こういうのはどうやるの?」っていうのは他のスレで聞いてね。
ボクがここで言ったことに対しての質問はここで聞いてくれていいよ。

WebProg板、だから、PerlでCGIを作るってことを前提に進めていこうね
質問があったら、このスレに書き込んでくれたら、
ボクに分かる範囲なら答えられるかもね
あ、最低限HTMLの知識は必要だからそのへんよろしくね。

あと、フリーのCGIでもいいから設置経験があったらいいね。
少しでも中をいじってみたことがあるっていうならなおいいね。

あと、わかりやすくするためなら、かなり強引な解釈で説明してる
ところもあるけど、とりあえずはあまり気にしないでね。

自分でCGIを作る、っていうのは、とても危険なことなんだ。
例えば、お金も持ってないのにたい焼きを買うくらい。
下手をすると、サーバーをダウンさせたりすることもできるから、
自分で作ったものはちゃんとテストして設置しないとダメだよ。

ttp://www.kent-web.com/www/
ここのページで、CGIをローカル(自分のパソコン)で動かす方法を
紹介してるから、参考にしてやってみてね。

じゃあ、今日の話はこのへんで終わるね。
737nobodyさん:03/03/19 15:01 ID:???
おわ。久々に昔の感じだな。
738nobodyさん:03/03/19 15:02 ID:???
のAAのがいいね。
739nobodyさん:03/03/19 15:02 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  <ヘッダとボディ
 (ニE(#つo⊂#)

まず、覚える決まり事があるから覚えようね
1行目には、【Perlへのパス】っていうものを書くんだよ。
これは、動作させたいサーバーによって変わったりするんだよね。
わからないときは、設置サーバーに問い合わせようね。
ボクはボクが使ってるサーバーに合わせて書くから、適当に変えてね。
 ↓ こんなふうに1行で書くよ。
#!/usr/local/bin/perl

HTMLには、 <head> タグと <body> タグがあるよね?
Perlにも、これとなんとなく似た感じのものがあるんだよ。
ヘッダとボディ、っていうのがあって、ヘッダには、HTMLと同じように
実際画面には表示されない部分みたいなものを書くんだよ。
ボディは、画面に表示される部分なんだよ。

その次に、「このCGIはHTMLを書き出すよ」っていうことを
ちゃんと示さないとダメなんだ。
だから、次の行を、書き入れてみてね。

print "Content-type: text/html;\n\n";

とりあえず、今は深い意味は考えなくてもいいよ。
ここで出てくる、 \n っていうのは、「改行」を表すことなんだ。
【1行目】〜【2回 \n が続くところ】までがヘッダ、あとはボディ。
これはすごく大切だから覚えておいてね。
print っていうのは、「表示する」ってことだと、とりあえずは
思っててくれて大丈夫だよ。
またあとの方で、詳しく説明するからね。
740nobodyさん:03/03/19 15:02 ID:???
漏れはContent-type: text/html\r\n\r\nって感じでセミコロン書いてないが、別に問題無いかな?
741nobodyさん:03/03/19 15:02 ID:???
できることなら
Content-Type: text/html; charset=EUC-JP
のように charset も出してあげませう。
742nobodyさん:03/03/19 15:02 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  <何か表示してみよう(1:ソース)
 (ニE(#つo⊂#)

前回ちょっとお話したけど、 print っていう【関数】を使って、
実際に何か表示してみようね。
このソースを、 perl0001.cgi とかのファイル名で保存してね。

-[perl0001.cgi]-------------------------------------------------
#!/usr/local/bin/perl

# ヘッダ
print "Content-type: text/html;\n\n";

# ボディ
print "<html>\n";
print "<body>\n";
print "うぐぅ\n";
print "</body>\n";
print "</html>\n";

exit;
----------------------------------------------------------------

保存する場所は、最初に挙げたHPの解説通りにやっていれば、
C:\www\home\perl\ ぐらいに保存してね。(perlフォルダは作ってね)

そして、AnHttpdを起動して、↓にアクセスしてみてね。
http://127.0.0.1/perl/perl0001.cgi

細かい解説は次にしていくね。
743nobodyさん:03/03/19 15:03 ID:???
ちょっとよく意味がわからないけど…
ちゃんと動くならそれでいいとおもうよ
文字コードの話はもうちょっと後で
お話ししようと思ってたんだけど…
744nobodyさん:03/03/19 15:03 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  <何か表示してみよう(2:解説)
 (ニE(#つo⊂#)

□ 文
1行を「文」って呼ぶよ。最後には、必ず ; をつけてね。
これは、英語の文の最後にピリオド . がついているような感じ。
文の最後にはつけるようにしないと動かないよ。
ボクもたまに書くの忘れてエラー起こしちゃうんだ。

□ #…
# よりあとは、コメントになって、あってもなくても同じだよ。
HTMLの、 <!-- --> みたいな感じだね。

□ \n
\n は改行を表すよ。PerlでCGIを作るときには、
出力する【HTMLソースが改行されるだけ】だから気をつけてね。
表示上、改行したいときは、 <br> を使わないといけないよ。

□ print "●"
● の部分に、表示したい文字を入れるよ。
ファイルハンドルっていうものに関係があるんだけど、もっと後でね。

□ exit
【スクリプト】を終了させるときに使うんだよ。
これがなくても最後までいったら自動で終了するけど、
構造が複雑になってきたら見にくいから書く習慣があった方がいいね。

これで君もPerlプログラマーになれたんだよ。
でもこんな文字を出すだけなんてこと、HTMLでやればいいよね。
次はあんまり面白くないけど、Perlだからできることを勉強するよ。
745nobodyさん:03/03/19 15:03 ID:???
楽しいですが、何か?
746nobodyさん:03/03/19 15:03 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  <変数、配列、連想配列(1:説明)
 (ニE(#つo⊂#)

じゃあ今回は、変数、配列、連想配列のみっつを覚えようね。
今回は簡単だから説明だけ聞いてね。
次回は使い方を説明するよ。

変数…例えれば、メモ帳1枚に名前をつけたもの。
   自由に書いたり、消したり、書き換えたりできるよ。
   「スカラー」「スカラー変数」とかいうこともあるよ
   「abcの紙」みたいに指定できるよ。
   「abcの紙」って指定したいときは、 $abc って書けばいいよ。

配列…例えれば、名前をつけたメモ帳1冊。
   0ページから始まって、何ページでも増やせるよ。
   「リスト」とかいうこともあるよ。
   「abcメモ帳の2ページめ」みたいな感じで指定するよ。
   こんなふうに指定したいなら、 $abc[2] って書くといいよ。

連想配列…例えれば、名前がついたメモ帳1冊の紙1枚ずつに、
     それぞれ名前違うがついたもの。
     「ハッシュ」っていうこともあるよ。
     「abcメモ帳のxyzのページ」みたいに指定するよ。
     こんな感じなら、 $abc{xyz} って書くことができるよ。

次は簡単な例を見てみようね。
747nobodyさん:03/03/19 15:03 ID:???
200だね
748nobodyさん:03/03/19 15:04 ID:???
何気に続いてるんですね。気にしてなかった…
749nobodyさん:03/03/19 15:04 ID:???
ハイレベルな話題も希望
750nobodyさん:03/03/19 15:04 ID:???
まだ、このスレあったのか
751nobodyさん:03/03/19 15:04 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  <変数、配列、連想配列(2:実行例)
 (ニE(#つo⊂#)

□ 変数への書き込み方
$abc = "うぐぅ";

こんな感じにすると、【変数】 $abc には、 「うぐぅ」という
【文字列】が書き込まれたことになるよ。
同じように、

$abc[0] = "月宮あゆ"; # 配列
$abc{def} = "水瀬名雪"; # ハッシュ

みたいなこともできるよ。

□ 変数からの読み込み方
たとえば、 $abc の内容を表示したいっていうときは、

print "$abc";

ってかくとできるよ。
他にも方法はあるけど、とりあえずこれだけ覚えてるといいかな。


ここまでの説明なら、「こんなものが何の役に立つかわからない」と
思う人が多いと思うけど、【変数】がなかったら、何もできないよ。
じゃあ次からは実際に使用例を見ていこうね。
752nobodyさん:03/03/19 15:04 ID:???
うぐぅ
ハイレベルな話題は、たぶんボクにはできないかな…
うぐぅ
753nobodyさん:03/03/19 15:04 ID:???
これくらいの初歩からやってくれた方が漏れにとってはいいよ。
754nobodyさん:03/03/19 15:05 ID:???
ストーブはどう作るの?冬にかけて
755nobodyさん:03/03/19 15:05 ID:???
漏れも同じ
sage進行でマターリとおながいします。>ALL
756nobodyさん:03/03/19 15:05 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  <時計を表示してみよう(1:ソース)
 (ニE(#つo⊂#)

じゃあ今回は時計を表示してみよう。
ソースはこんな感じだよ。

-[perl0002.cgi]-------------------------------------------------
#!/usr/local/bin/perl

print "Content-type: text/html;\n\n";

($sec, $min, $hour, $day, $mon, $year) = localtime time;

print "<html>\n";
print "<body>\n";
print "  〃┏━━<br>\n";
print "  |. ノノソハ)))<br>\n";
print "(\リリ ´ー`)リ <$day - $hour:$min:$sec<br>\n";
print " (ニE(#つo⊂#)";
print "</body>\n";
print "</html>\n";

exit;
----------------------------------------------------------------

C:\www\home\perl\perl0002.cgi に保存して、アクセスしてみてね。
http://127.0.0.1/perl/perl0002.cgi

詳しい解説は次にまとめてするね。
757nobodyさん:03/03/19 15:05 ID:???
うん、ボクと一緒に勉強しようね
そういう会社に入ってみればいいんじゃないのかな
マターリやっていこうね、よろしく
758nobodyさん:03/03/19 15:05 ID:???
こんなきもい時計やだよ
759nobodyさん:03/03/19 15:05 ID:???
同感。まあ、糞言語らしいといえばそうかな。
760nobodyさん:03/03/19 15:06 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  <時計を表示してみよう(2:解説)
 (ニE(#つo⊂#)   算術演算子(1:加法演算子)

Line 5:カッコの中は、秒,分,時,日,月(※1),年(※2)でできてるよ。
    localtime で、時間を変数に書き込むんだけど、
    これは丸覚えでいいよ。また今度詳しく説明するね。
    この例では、6個の変数にそれぞれ書き込んでるよ。

Line11:print の中には【変数】を書くこともできるよ。
    その【変数に書き込まれてる文字や数値】を表示するよ。

※注意
月は、実際の月より、1少なくなってるよ。
実際、表示に使うなら、1足して使ってね。
同じように、年は、西暦より1900少なくなってるよ。
【変数】を計算(この例なら月に1を、年に1900を足す)するには、
次のように書くだけで簡単にできるよ。

$mon ++;
$year += 1900;

● ++
っていうのは、変数●に1を足すっていうことだね。
$mon += 1;
と書いてもできるよ。

● += ◆
で、変数●に、数値◆を足すっていうことだよ。

ぜひ年と月も表示できるように改造してみてね、答えは次回書くよ。
761nobodyさん:03/03/19 15:06 ID:???
質問です。
foreach(split(/<>/,$line)){}
は必要な部分を順に取り出しているのか、
それとも一度無名配列に入れるようなことをしているのか教えてください。
762nobodyさん:03/03/19 15:06 ID:???
後者じゃ
763nobodyさん:03/03/19 15:06 ID:???
しくしく。ありがとうございます。変数が大きいのですが、
substrは毎回先頭から数えているような感じがするのですが、
変数使用を少なくする場合これしかないのでしょうか。
764nobodyさん:03/03/19 15:06 ID:???
index で'<>'をサーチ位置指定でやって、substr で部分取り出し
765nobodyさん:03/03/19 15:06 ID:???
どうもありがとうございました。
766nobodyさん:03/03/19 15:06 ID:???
#!/usr/local/bin/perl

print "Content-type: text/html;\n\n";

($sec, $min, $hour, $day, $mon, $year) = localtime time;
$year+=1900;
$mon++;

print "<html>\n";
print "<body>\n";
print "  〃┏━━<br>\n";
print "  |. ノノソハ)))<br>\n";
print "(\リリ ´ー`)リ <$year/$mon/$day - $hour:$min:$sec<br>\n";
print " (ニE(#つo⊂#)";
print "</body>\n";
print "</html>\n";

exit;

こうかね。
767nobodyさん:03/03/19 15:07 ID:???
あゆあゆ以外が質問に答えるなよばか!
768nobodyさん:03/03/19 15:07 ID:???
スレッド・ストッパーキタ━━━━(゚∀゚)━━━━!!!!

              ↓
769nobodyさん:03/03/19 15:07 ID:???
↑ごめん

222ゲトー
770nobodyさん:03/03/19 15:07 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  <時計を表示してみよう(3:年月日を表示)
 (ニE(#つo⊂#)

じゃあ前回の答えだね。

-[perl0003.cgi]-------------------------------------------------
#!/usr/local/bin/perl

print "Content-type: text/html;\n\n";

($sec, $min, $hour, $day, $mon, $year) = localtime time;

$mon ++;
$year += 1900;

print "<html>\n";
print "<body>\n";
print "  〃┏━━<br>\n";
print "  |. ノノソハ)))<br>\n";
print "(\リリ ´ー`)リ <$year/$mon/$day - $hour:$min:$sec<br>\n";
print " (ニE(#つo⊂#)";
print "</body>\n";
print "</html>\n";

exit;
----------------------------------------------------------------

今回はもう行数がなくなっちゃったから終わりだけど、
次は曜日を表示してみようね。
771nobodyさん:03/03/19 15:07 ID:???
うん、そうだね。
ボクもわからないことが多いからね…
ストップされちゃうの…?このスレ…
772nobodyさん:03/03/19 15:08 ID:???
↑トリップ間違えました
773nobodyさん:03/03/19 15:08 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  <if の文
 (ニE(#つo⊂#)

($sec, $min, $hour, $day, $mon, $year) = localtime time;

この部分を、

($sec, $min, $hour, $day, $mon, $year, $week) = localtime time;

こんな感じに変えると、 $week には曜日が書き込まれるよ。
でも【曜日は数字】なんだよね…
日曜日なら0、月曜日なら1…土曜日なら6が $week には入ってる。

今日が何曜日か表示したい!のに、数字じゃ困るよね。
そこで if を使ってみよう。

if(●){◆}
機能説明:もし●なら、◆する。
●…条件。 ◆…処理。



if($week == 0){$you = "日";}
if($week == 1){$you = "月";}
  :
if($week == 6){$you = "土";}

== っていうのは、左辺と右辺が等しい、っていう意味だよ。

このへんを使って、曜日を出してみてね。答えは次回載せるよ。
774nobodyさん:03/03/19 15:08 ID:???
#!/usr/local/bin/perl

print "Content-type: text/html;\n\n";

($sec, $min, $hour, $day, $mon, $year, $week) = localtime time;

if ($week == 0) {$you = "日"; }
if ($week == 1) {$you = "月"; }
if ($week == 2) {$you = "火"; }
if ($week == 3) {$you = "水"; }
if ($week == 4) {$you = "木"; }
if ($week == 5) {$you = "金"; }
if ($week == 6) {$you = "土"; }

$mon ++;
$year += 1900;

print "<html>\n";
print "<body>\n";
print "  〃┏━━<br>\n";
print "  |. ノノソハ)))<br>\n";
print "(\リリ ´ー`)リ <$year/$mon/$day - $hour:$min:$sec−$you曜日<br>\n";
print " (ニE(#つo⊂#)";
print "</body>\n";
print "</html>\n";

exit;
775nobodyさん:03/03/19 15:08 ID:???
$year/$mon/$day($you) - $hour:$min:$sec
の方が綺麗だな。
776nobodyさん:03/03/19 15:08 ID:???
#!/usr/bin/perl

print "Content-type: text/html;\n\n";

($sec, $min, $hour, $day, $mon, $year, $week) = localtime time;

$mon ++;
$year += 1900;
@you = (
"日",
"月",
"火",
"水",
"木",
"金",
"土"
);

print "<html>\n";
print "<body>\n";
print "  〃┏━━<br>\n";
print "  |. ノノソハ)))<br>\n";
print "(\リリ ´ー`)リ <$year/$mon/$day - $hour:$min:$sec−@you[$week]曜日<br>\n";
print " (ニE(#つo⊂#)";
print "</body>\n";
print "</html>\n";

exit;
777nobodyさん:03/03/19 15:08 ID:???
#!/usr/bin/perl

print "Content-type: text/html;\n\n";

($sec, $min, $hour, $day, $mon, $year, $week) = localtime time;

@tuki = ("Jan","Feb","Mar","Apl","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
$year += 1900;
@you = ("Sun","Mon","Tue","Wed","Thu","Fri","Sat");

print "<html>\n";
print "<body>\n";
print "  〃┏━━<br>\n";
print "  |. ノノソハ)))<br>\n";
print "(\リリ ´ー`)リ <$day-$tuki[$mon]-$year($you[$week]) -- $hour:$min:$sec<br>\n";
print " (ニE(#つo⊂#)";
print "</body>\n";
print "</html>\n";

exit;
778nobodyさん:03/03/19 15:08 ID:???
確かにそりゃ正解だけど配列とかその辺になってからだよそれは・・・・・
779nobodyさん:03/03/19 15:09 ID:???
#!/usr/local/bin/perl

print "Content-type: text/html;\n\n";

($sec, $min, $hour, $day, $mon, $year, $week) = localtime time;

@tuki = ("Jan","Feb","Mar","Apl","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
$year += 1900;
@you = ("Sun","Mon","Tue","Wed","Thu","Fri","Sat");

print "<html>\n";
print "<body>\n";
print "  〃┏━━<br>\n";
print "  |. ノノソハ)))<br>\n";
print "(\リリ ´ー`)リ <$day-$tuki[$mon]-$year\($you[$week]\) -- $hour:$min:$sec<br>\n";
print " (ニE(#つo⊂#)";
print "</body>\n";
print "</html>\n";

exit;
780nobodyさん:03/03/19 15:09 ID:???
perlのパスは俺の場合/usr/bin/perlなんだよ・・・。
エスケープ忘れてたし・・・。
でも""の中で()は一応エスケープされてると思うんだけど。
ちゃんと実行して検証しているし。
やっぱエスケープは礼儀ということか・・・。
781nobodyさん:03/03/19 15:09 ID:???
だからまだ習ってない配列とか先に進むなっての(;´Д`)
782nobodyさん:03/03/19 15:09 ID:???
      _ _
      〃┏━━ 、
      |  ノノソハ)))  / ̄ ̄ ̄ ̄
    Λ_リリ ;´∀`)リ < うぐぅあげ♪
   ( ⊂#~ ∞~~#⊃ \____
   ( つ/_∞__|~
   |(__)_)
   (__)_)
783nobodyさん:03/03/19 15:09 ID:???
他で習ったよ
784nobodyさん:03/03/19 15:09 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  <曜日を表示
 (ニE(#つo⊂#)

 が答えだね。。
配列とか使ってやるのは、もっと先に応用例としてあげたいから、
勝手に応用を使わないでほしいな…

今日の夜くらいに続きをあげようと思うけど、次考えてないんだよね…
ちょっと考えとくね
785nobodyさん:03/03/19 15:10 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  <配列の扱い方
 (ニE(#つo⊂#)

ちょっと配列の話が出てきたから説明するね
配列は、 $abc[0] とかで扱えるんだけど、
@abc で、[0] から 最後まで全部、っていう意味があるんだよ。

@you = ("日", "月", "火", "水", "木", "金", "土");

こういう感じで、0ページめから順番に値をいれることができるんだ。
こういうのを【要素】っていうから覚えておいてね。
最初の要素は、1じゃなくて0だから気を付けてね。

この例で、 $you[0] には、「日」、 $you[1] には、「月」…
っていう具合に、 $you[6] まで入ってるよ。

[ ] の中は、変数も使えるから、曜日の話には応用できるね。
こっちのほうが書き方がシンプルで好きだから、
ボクはいつも配列を使ってやってるよ。
ちなみに、連想配列の、「全部の要素」は、 % をつけて表すよ。

じゃあ、前回のソースを書き替えてみようね。

@you = ("日", "月", "火", "水", "木", "金", "土");
($sec, $min, $hour, $day, $mon, $year, $week) = localtime time;
print "$you[$week] 曜日";

ってこんな感じで曜日が出るね。
行数がなくなったから簡潔でごめんね。
次回は、ひととおり計算ができる、算術演算子をやるよ。
786nobodyさん:03/03/19 15:10 ID:???
補足しておくと、配列の全部は、 @ をつけて表すよ。
配列の中のひとつだけ、は、 @ じゃなくて $ をつけて、
[0] みたいな【添え字】をつけるよ

ってことだね
787nobodyさん:03/03/19 15:10 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  <算術演算子(2)
 (ニE(#つo⊂#)

これぐらいはひととおり、全部覚えてね。
数学でおなじみの、計算ができる演算子だよ。

● = ◆ + ★
 数値、◆と★を加算(足し算)した値を●に代入するよ。

● = ◆ - ★
 数値、◆から★を減算(引き算)してその値を●に代入するよ。

● = ◆ * ★
 数値、◆に★を乗算(掛け算)してその値を●に代入するよ。

● = ◆ / ★
 数値、◆から★を除算(割り算)してその値を●に代入するよ。

● = ◆ % ★
 数値、◆を★で割った、余りを●に代入するよ。
 ◆と★は小数なら、小数点以下は切り捨てられて計算されるよ。

● = ◆ ** ★
 数値、◆の★乗の値を●に代入するよ。


優先順位についてちょっと説明するね。
実際の数学と同じように、加算、減算は、後回しにして計算されるよ。
先に計算したいなら、 ( ) でくくってみてね。
じゃあ次回は、 for でのループ(繰り返し処理)について説明するね。
788nobodyさん:03/03/19 15:10 ID:???
あゆた〜〜ん
789nobodyさん:03/03/19 15:10 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  <for の文、数値比較演算子
 (ニE(#つo⊂#)

for っていうのは、ループができるんだよ。
じゃあまず、文法の説明をするね。

for ( ●; ◆; ★ ) { ■ }

● … 最初の状態  ◆ … ループする条件
★ … 増減式    ■ … 処理

じゃあ、ちょっと例を書いてみるね。

for ( $i = 1; $i <= 10; $i ++ ) { print "$i"; }

これは、最初、変数 $i は 1 だよ、って決めて、ループ1回ごとに、
変数 $i に 1 を加算していくよ。
変数 $i が、 10 以下なら、次のループに入るよ。
と、いうことは、この例では、10回の処理が繰り返されて、
"12345678910" って表示されることになるね。

<= っていうのが出てきたから、数値比較演算子もひととおりみておくね。
if とか、 for とかの条件で使われることが多いよ。

● == ◆ … ●と◆が数値として等しい ( 0 と 0.0 は等しい )
● != ◆ … ●と◆が数値として等しくない
● < ◆ … ●が◆より小さい
● > ◆ … ●が◆より大きい
● <= ◆ … ●が◆以下
● >= ◆ … ●が◆以上
790nobodyさん:03/03/19 15:11 ID:???
ど、どうしたの…?
791nobodyさん:03/03/19 15:11 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  < while / until / next / last
 (ニE(#つo⊂#)

while / until っていうのは、どっちもループだよ。
じゃあまず、文法の説明をするね。

while ( ● ) { ◆ }
until ( ● ) { ◆ }

● … 式 ( 後述参照 )
◆ … 繰り返す処理

どちらの場合でも、● は、比較演算子を使った条件を指定するよ。
数値比較演算子じゃなくって、文字列比較演算子っていうのも
あるんだけど、それは次くらいに詳しくみてみるよ。

while は、英語で、【〜の間】だね。
Perl でも、条件●が成立する間、◆を繰り返すことになるよ。

until は、英語で、【〜まで】だね。
●が成立するまで(=●が成立しない間)、◆を繰り返すよ。

next / last は、ループを途中でやめたりするのに使うよ。

next は、現在のループを終了して、次のループに入る、っていうこと、
last は、全てのループからただちに抜け出す、っていうことだよ。
じゃあ次回は実例を見てみようね。
792nobodyさん:03/03/19 15:11 ID:???
ここまでは普通についていけるな
793nobodyさん:03/03/19 15:11 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  < ループと文字列比較演算子
 (ニE(#つo⊂#)

こんなことをすることは少ないと思うけど、例を挙げるね。

$hoge = "aaa";
until($hoge eq "aaaaaaaaaa"){
$hoge = "a$hoge";
}

この例では、変数 $hoge の前に、次々に "a" を追加していってるね。
"a" が10個並んだところでループ終了だね。

どんな時に、条件に一致するか (真偽) については、次回説明するね。

これも条件で使われるよ。数値として比較する数値比較演算子とは違って、
文字列として比較する、文字列比較演算子っていう名前があるよ。

● eq ◆ … ●と◆が完全に一致
● ne ◆ … ●と◆が一致しない
● =~ /◆/ … ●に◆が含まれる …(※)

他にもあるんだけど、これだけ覚えてれば十分だよ。

※本当は、【正規表現】っていう新しいことなんだけど、
 よく使いそうだからここで一緒に覚えようね。
 正規表現は、近いうちに勉強するよ。
794nobodyさん:03/03/19 15:11 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  < 真と偽
 (ニE(#つo⊂#)

条件に合致するかどうかをチェックするのは、真か偽のどちらかで表されるよ。
要は、「合致している、成立する」が真、「しない」のが「偽」だよ。

if も、 while も、 until も、真偽をチェックするよ。

じゃあここで、どんな時に真、偽になるかを覚えようね。

偽:0 / 未定義 / 空白
真:「偽」以外の要素

if(0){print "偽だからここは表示されないよ";}
if(1){print "真だから表示されるよ";}
$abc = "";
$def = "ghi";
if($abc){print "空白変数だから偽";}
if($def){print "文字列だから真";}
if($jkl){print "未定義変数だから偽";}

じゃあ次回は、 if をもっと便利に扱える、
elsif 〜 else を勉強しようね。
795nobodyさん:03/03/19 15:11 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  < if / elsif / else
 (ニE(#つo⊂#)

まず、文法から見てみようね。

if ( ● ) { ◆ }
elsif ( ◎ ) { ◇ }
else { ■ }

●◎ … 条件  ◆◇■ … 処理

まず、 if だけの文と同じように、 ● の真偽がチェックされて、
真なら ◆ が実行されるよ。
偽なら、 if から抜けて、次に elsif の◎の真偽がチェックされるよ。
真なら、◇が実行されて、偽なら、 else の■が実行されるよ。
elsif は、ひとつの if 構造のなかにいくつでも書くことができるよ。

例として書いてみるね。

$i = 100;
if($i < 50){print "50より小さい";}
elsif($i > 120){print "120より大きい";}
elsif($i == 80){print "80である";}
else{print "その他";}

このへんはとっても重要だから、しっかり覚えておいてね。
796nobodyさん:03/03/19 15:11 ID:???
おもったより続いてますねぇ
頑張ってください^^;
797nobodyさん:03/03/19 15:12 ID:???
ついでですが…保存予定ですので宜しくお願いします。m(_ _)m
798nobodyさん:03/03/19 15:12 ID:???
ごめんなさい…ageてしまった…
799nobodyさん:03/03/19 15:12 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  < 正規表現 (1)
 (ニE(#つo⊂#)

正規表現っていうのを勉強するよ。
ちょっと難しい、ってよく言われるけど、そう思わずに
しっかり読むと必ず分かるから、とりあえず読んでみてね。

正規表現は、柔軟なパターンマッチをすることができるよ。
例えば、特定の文字が含まれるかどうか調べたり、
文字の置き換えをしたり、またあとで勉強するけど、
split っていう関数のパターンに使ったりできるよ。

ここはよくわからなくてもいいよ。
わかりやすく説明すると、

● =~ /◆/★

これで、【変数●がパターン◆にマッチ】っていうことだよ。
【マッチ】っていうのは、簡単に言うと、【●が◆の状態である】
っていうことなんだ。じゃあ、【◆の状態】っていうのを説明するね。
★については、2回後くらいに説明するね。今はなにも書かいでね。
まず、例は、3回前に勉強した含まれるパターンだね。
◆には【普通の文字】と、特別な意味のある、【メタ文字】のふたつが使えるよ。
3回前に勉強したのは、普通の文字だけだね。
じゃあ、メタ文字について説明するね。

続く…
800nobodyさん:03/03/19 15:12 ID:???
…続き

. … なにか1文字
* … 直前の文字やパターンの0回以上の繰り返し (いくつあってもよい)
+ … 直前の文字やパターンの1回以上の繰り返し (必ず1つ以上ある)
? … 直前の文字やパターンが1つだけあってもなくてもよい
[abc] … [ ] で囲んだ文字の中のどれか1文字
^ … 【…で始まる】という意味。パターンの最初に使う。
$ … 【…で終わる】という意味。パターンの最後に使う。
{5} … 直前の文字やパターンの5回繰り返し
{3,8} … 直前の文字やパターンの3回以上8回以下の繰り返し

例だよ。

if ( $abc =~ /^def$/ ) { print "マッチ"; }

これは、

if ( $abc eq "def" ) { print "マッチ"; }

と、同じ意味になるよ。
とりあえず、何の役に立つかわからなくてもいいから、
使い方は覚えておいてね。
801nobodyさん:03/03/19 15:12 ID:???
うん、ありがとう
頑張るよ

ずっと読んでくれてるの?
なんだか嬉しいな

別に気にしなくていいよ


…みんなはこのへんちゃんと理解してくれてるのかな?
わかりにくいところがあったら言ってね。
説明しなおすからね。
802nobodyさん:03/03/19 15:12 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  < 正規表現 (2)
 (ニE(#つo⊂#)

今回は、文字クラス [ ] について詳しく勉強するよ。

[ ] の中に文字を書くと、正規表現では [ ] の中の、
どれか1文字にマッチするんだったね。

じゃあ、特殊な書き方も含めて説明するね。
[A-Z] は、 A から Z までのどれか1文字だね。
[A-Za-z] なら、大文字か小文字だよ。
[^0-9] [ ] の先頭に ^ があると、【ここにない1文字】
って、意味が逆転するよ。

if ( $xxx =~ /[ABCDE]/ ) { print "ABCDE のどれかが含まれる"; }
if ( $xxx =~ /[abcde]/ ) { print "abcde のどれかが含まれる"; }
if ( $xxx =~ /[A-Z]/ ) { print "ABC…XYZ のどれかが含まれる"; }
if ( $xxx =~ /[0-9]/ ) { print "0123456789 のどれかが含まれる"; }
if ( $xxx =~ /[A-Z]$/ ) { print "アルファベット大文字で終わる"; }
if ( $xxx =~ /[A-Z]+/ ) { print "アルファベット大文字が1回以上繰り返し"; }
if ( $xxx =~ /^[A-Z]+$/ ) { print "アルファベット大文字しかない変数"; }
if ( $xxx =~ /[^A-Z]/ ) { print "アルファベット大文字以外の文字が含まれている"; }

次回は、 ( ) と後方参照について説明するね。

#間違いがあったら指摘してね…
803nobodyさん:03/03/19 15:12 ID:???
まだなんとかわかるよ。
804nobodyさん:03/03/19 15:13 ID:???
今のペースでいくとオブジェクトな話になるのは何年後だろう^^;
805nobodyさん:03/03/19 15:13 ID:???
まあ後は自分で勉強すれば良いだけの話だし、いいのでは?
途中で挫折した香具師多いと思われるから、マターリ進行で…
806nobodyさん:03/03/19 15:13 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  < 正規表現 (3)
 (ニE(#つo⊂#)

今回は、後方参照に使う、 ( ) について詳しく説明するね。

( ) の中に文字を書くと、【 ( ) の中でマッチした部分をあとで参照できる】んだ。
正規表現は、 [ ] を使うと、マッチするパターンがたくさん考えられるよね。
マッチした部分をあとから参照するのに使うよ。

パターンの中では、 ( ) でくくった順に、\1 、 \2 、 \3 …って参照できるよ。
パターンの外で参照するなら、 $1 、 $2 、 $3 …で参照するんだ。
パターンの外で参照する方がよく使うと思うから、
こっちはしっかり使い方を理解しておいてね。

じゃあたくさん例文を見て、使い方を覚えてね。

if ( $xxx =~ /([ABCDE])/ ) { print "マッチ:$1"; }
if ( $xxx =~ /([abcde])\1/ ) { print "abcde のどれかが2回以上続く"; }
if ( $xxx =~ /([0-9]+)-([0-9]+)/ ) { print "マッチ:$1-$2"; }

次回は、 [ ] を簡略化できる感じの、メタ文字と、
スペースがあまったら正規表現演算子をみてみようね。

今回はちょっと短いけどこれで終わりだよ。
807nobodyさん:03/03/19 15:13 ID:???
うん、それならよかった

結構かかりそうだよね…
そんなに難しい話になるまで続くのかな…?

うん、そうだね
まあ実用的なスクリプト作れるぐらいになったら終了、かな
808nobodyさん:03/03/19 15:13 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  < 正規表現 (4)
 (ニE(#つo⊂#)

今回は、メタ文字について説明するよ。

パターンの中では、 [ ] で囲む、よく使いそうなものを、
メタ文字っていうので使えるんだ。

\d … 数字を表すよ。 [0-9] と同じだね。
\D … 数字以外を表すよ。 [^0-9] と同じ。
\w … [A-Za-z0-9_] と同じ。単語構成文字、って言うみたいだね。
\W … [^A-Za-z0-9_] と同じ。

他にもあるけど、とりあえずこれだけ覚えてたらボクの経験上問題ないね。

じゃあ、演算子について説明するね。

正規表現(1) でも少し触れたけど、
● =~ /◆/★
この、★の部分だったね。
じゃあ、簡単に説明するね。

何種類かあるんだけど、 i だけ知っておけば十分だよ。

i をつけることによって、大文字小文字の区別をしないことができるんだ。

if ( $xxx =~ /abc/i ) { print "大文字小文字を区別せずにabcが含まれる"; }

他の関数も入ってくると、 e とか g とかもあるけど、それはそのとき説明するね。
809nobodyさん:03/03/19 15:13 ID:???
一行抜けちゃった…

「これでとりあえず、正規表現は終わりだよ、次回は配列操作をやるね。」
810nobodyさん:03/03/19 15:14 ID:???
>>あゆ

ほぼ、一日に1レクチャか、まめだね。尊敬するよ。
下手な日記書いてる奴よっかスゲーなおまい
811nobodyさん:03/03/19 15:14 ID:???
       |こたつから出られなくなる季節です
   ∧ ∧ |/\_________                   
   (,,゚Д゚)____.
   (つ/~ ※ ※ \
   /※ ※ ※ ※ \

812nobodyさん:03/03/19 15:14 ID:???
片付けないと炬燵出せません(T-T)
813nobodyさん:03/03/19 15:14 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  < 配列操作
 (ニE(#つo⊂#)

配列操作関数だよ。
よく使うからしっかり覚えてね。

unshift ★, ◆
 … 配列★の先頭に要素◆を追加する

shift ★
 … 配列★の先頭の要素を削除する

push ★, ◆
 … 配列★の末尾に要素◆を追加する

pop ★
 … 配列★の末尾の要素を削除する

このよっつだよ。じゃあ例をみてみるね。

@xxx = ("a", "b", "c");
@yyy = ("x", "y", "z");

push @xxx, "d"; # 末尾に d を追加 … a, b, c, d になる
push @xxx, @yyy; # a, b, c, d, x, y, z
pop @xxx; # a, b, c, d, x, y
shift @xxx; # b, c, d, x, y
unshift @xxx, "a" # a, b, c, d, x, y

次回は、ファイル入出力とファイルハンドルについて説明するね。
814nobodyさん:03/03/19 15:14 ID:???
うん、ありがとう
途中でいきなり終わり、なんてことにならないようにがんばるよ

うん、そうだね
これからどんどん寒くなっていくからね
ボクもこの前こたつ出したよ

香里さんの家ってそんなに散らかってるの…
片づけてあとで温かいこたつに入るときもちいいよ
815nobodyさん:03/03/19 15:14 ID:???
冬でもアイス美味しいですよ
816nobodyさん:03/03/19 15:15 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  < ファイル入出力 (1)
 (ニE(#つo⊂#)

今回はファイルの読み書きとファイルハンドルについて説明するね。

・ファイルハンドル
ファイルハンドル、っていうのは、ファイルを開くときに、ファイルハンドル、
っていうものに結びつけて開くんだ。ファイルに書くときも同じだよ。
これにファイルを結びつけてを作るには、 open っていう関数が一番一般的だね。
ファイルハンドルは、半角大文字でつけるのが原則だよ。
ファイルハンドルを使い終わったら、 close 関数で閉じるようにしようね。

open ★, ◆
close ★

★ … ファイルハンドル (半角大文字ならなんでもいいよ)
◆ … ファイル名
ファイル◆をファイルハンドル★に結びつけて開くよ。

じゃあ、 "test.txt" の内容を $test にいれて、表示するサンプルを書いてみるね。

open IN, "test.txt";
$test = <IN>; # こうやってファイルハンドルを変数に代入する
close IN;

print "$test";

Perl の勉強熱心な人は、実際試してみるてね。
今回のプログラムは、いろいろやっていると何か気付くことがあるはずだから、
必ず試しに動かしてみてね。 test.txt の中を書きかえながら。
817nobodyさん:03/03/19 15:15 ID:???
ボ、ボクはいいよ、遠慮しとく
818nobodyさん:03/03/19 15:15 ID:???
ヲタとヲタの交流場はここですか?
819nobodyさん:03/03/19 15:15 ID:???
タイヤキアイス食え。

ここに書き込んだ時点であなたも(以下略
ここの会話がヲタ会話とわかる時点であなたも(以下略
820nobodyさん:03/03/19 15:15 ID:???
あゆたん、がんがれ。(うぐぅ
821nobodyさん:03/03/19 15:16 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  < ファイル入出力 (2)
 (ニE(#つo⊂#)

前回のスクリプトはみんな動かしてみてくれたかな?
いろいろやってみると、最初の1行しか表示されないことに気付いてくれたと思うんだ。
詳しくはそれはもう少しあとでやるね。
今回はファイルに書き込む方法を説明するよ。

open ★, "> test.txt";

こんなふうに、 > をつけてファイルを開くと、書き込みモードになるんだよ。
このファイルに書き込むには、

print ★ "test";

みたいな感じにするよ。
じゃあ、簡単なカウンターを書いてみるね。

行数が入らないから続くよ
822nobodyさん:03/03/19 15:16 ID:???
-[perl0004.cgi]-------------------------------------------------
#!/usr/local/bin/perl

print "Content-type: text/html;\n\n";

open IN, "log.txt";
$count = <IN>;
close IN;

$count ++;

open OUT "> log.txt";
print OUT "$count";
close OUT;

print "<body>$count</body>";

exit;
----------------------------------------------------------------

ちゃんと動かしてみてね。
今回はここで終わりだよ。
823nobodyさん:03/03/19 15:16 ID:???
たい焼きアイス…
あるなら食べてみたいかも

うん、ありがとうね
824nobodyさん:03/03/19 15:16 ID:???
たい焼きアイスはマジであるよ。
数年前CMやってたの覚えてるし、多分うちの近所のスーパーに行けばまだ売ってると思う。

たい焼きの形をした最中の中にあずきとバニラアイスが入ってまつ。
あずきのバニラアイスのハーモーニーがたまりませんです。

余談
自分暇つぶしに2chのTripFinderスレを読んで自分なりのプログラムを組んでみたです。
CPU負荷かかりまくり、でも任意のTrip探す手間を考えれば楽なもんかな?とか思いながら使ってます。
今度taiyakiって入ったIDを探したいです!
825nobodyさん:03/03/19 15:16 ID:???
あ、ちょっとミスをみつけたから書くね。
恥ずかしい…

-[perl0004.cgi]-------------------------------------------------
#!/usr/local/bin/perl

print "Content-type: text/html;\n\n";

open IN, "log.txt";
$count = <IN>;
close IN;

$count ++;

open OUT, "> log.txt"; # , が抜けてたね、ごめんね
print OUT "$count";
close OUT;

print "<body>$count</body>";

exit;
----------------------------------------------------------------

そうなんだ、じゃあボクも近くのスーパーに行って探してみるよ
ありがとうね
826nobodyさん:03/03/19 15:16 ID:???
この教室は解り易いよ〜。

楽しみに見てますです。

それとトリップ付けてみました、別に意味はないので・・・ただunyuなだけです。


コンビニでたいやきアイスは発見できませんでした・・・残念です。
827nobodyさん:03/03/19 15:16 ID:???
今日も頑張ってね。
828nobodyさん:03/03/19 15:16 ID:???
昨日の教室はなかったのか?
829nobodyさん:03/03/19 15:17 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  < foreach
 (ニE(#つo⊂#)

今回は foreach ループを説明するよ。
先に勉強しようと思ってたことを忘れてたから、簡単に説明するね。
次回からはまたファイル入出力の話に戻るからね。

foreach っていうのは、配列のすべての要素に一定の処理ができるんだ。
配列の中を全部表示したりしたいときに使うよ。
まず、構文を書くね。

foreach ● ( ◆ ) { ★ }

◆ に、対象の配列を書くよ。配列の要素が順番に変数 ● に入っていって、
順々に ★ が実行されていくよ。

これだけじゃなんのことかわからなくても、例を見てみてね。
実行したときどうなるか?は、自分で試してみてね。

@xxx = ("a", "b", "c", "d", "e", "f", "g", "h", "i", "j");

foreach $x (@xxx){print "$x";}
foreach (@xxx){print "$_";} # ● を省略したら、省略の原則、 $_ に入るよ。

この話を応用して次回にもっていくから、絶対に使えるようにしておいてね。
830nobodyさん:03/03/19 15:17 ID:???
わかりやすい…?
そう、かな…?
ありがとね

うん、頑張るよ

1日1つ頑張りたいけど、無理な日もあってごめんね
831nobodyさん:03/03/19 15:17 ID:???
.txtで今までの授業全部保存してるよ!

すっごく楽しみに見てるよ、これからも頑張ってね。
832nobodyさん:03/03/19 15:17 ID:???
私も楽しみにしているので、無理せず続けて下さいね。
833nobodyさん:03/03/19 15:17 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  < ファイル入出力 (3)
 (ニE(#つo⊂#)

今回は複数行のファイルを読み込む方法を説明するね。

open IN, "test.txt";

# 1行だけ読み込む
$test = <IN>;

# 全行読み込む
@test = <IN>;

close IN;

こんな感じにすると、1行ずつが配列のひとつの要素になるよ。
じゃあ、このファイルの中身を表示するには、

foreach (@test){
print "$_<br>";
}

ってやると表示されるよ。
じゃあ次回は、ファイルの読み書きもわかったし、
ユーザーが何か入力したのを受け取って結果を表示する、
ってことを勉強してみようね。
834nobodyさん:03/03/19 15:17 ID:???
ただの趣味の延長だから、変なところがあるかもしれないけど…
気に入ってくれてうれしいよ、ありがとうね。
835nobodyさん:03/03/19 15:18 ID:???
※注意

最初にも言ったけど、ここの教室でやっていることは、
【わかりやすくするために多少強引な説明をしている】ところがあるよ。
基本なんだけど、【わかりにくいし使われもしないから省いている】ところも
たくさんあるよ。他のサイトとか見てると、戸惑うことも多いとおもうけど、
混同させないように注意してね。
836nobodyさん:03/03/19 15:18 ID:???
そ〜なんだ、解りました!
837nobodyさん:03/03/19 15:18 ID:???
すごいね

メルマガとか出してみたら?
838nobodyさん:03/03/19 15:18 ID:???
うぐぅage
839nobodyさん:03/03/19 15:18 ID:???
うぐぅ、あゆが帰ってきてる。まだ、このスレあったんだ。
840nobodyさん:03/03/19 15:18 ID:???
まだやってんの?ヲタドモ
841nobodyさん:03/03/19 15:19 ID:???
カエレ
842nobodyさん:03/03/19 15:19 ID:???
妄想族
843nobodyさん:03/03/19 15:19 ID:???
       ∬
(´・ω・)っ旦 <マターリ
844nobodyさん:03/03/19 15:19 ID:???
  ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( ´∀`)< このスレきもい♪
 (     つ  \______
 (_○___)
845nobodyさん:03/03/19 15:19 ID:???
煽りは放置の方向でマターリと
846nobodyさん:03/03/19 15:19 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  < フォームデーターの受けとり
 (ニE(#つo⊂#)

今回はフォームデータを受けとってみるよ。
最初のうちは、 cgi-lib.pl を使ってやってみることにするね。
下のサイトから入手できるよ。
http://cgi-lib.berkeley.edu/

確認しておくけど、フォームデータ、っていうのは、
HTMLの <form> とか <input> とかで送るデータのことだよ。

require "cgi-lib.pl";
&ReadParse;

まず、 cgi-lib.pl っていう名前で、ダウンロードしたソースを、
C:\www\home\perl\ に保存してみてね。
CGIに送られたフォームデータはこれだけで取得できるんだ。
( cgi-lib.pl が同じディレクトリにある時だけだよ)

例えばこんなデーターが送られたとすると、

aaa=xxx&bbb=yyy&ccc=zzz

%in っていうハッシュにまとめて値がいれられるよ。
例えば、 aaa を参照したいなら、 $in{'aaa'} っていう感じで取得できるよ。

フォーム入力ができたら、CGIの世界はとっても広がるよ。
次回は、簡易掲示板を書いてみるね。

#投稿が遅れてごめんね
847nobodyさん:03/03/19 15:20 ID:???
うんうん、よろしくね

それもいいかもね
わかりやすく書き直して、カリキュラムもしっかり組めたら出してみるかも

うん、乗っ取らせてもらったよ
WebProg板のスレはなかなか落ちないからね…

うんうん、マターリしようね
848nobodyさん:03/03/19 15:20 ID:???
メールアドレス作ってみたよ
内容についての質問とか要望があったらメールしてくれてもいいよ

なるべく返信はしたいけど、忙しくて手が回らなかったりしたらごめんね。
849nobodyさん:03/03/19 15:20 ID:???
いつもここ見ながら新しいアイディアを模索してるよ。

もう来ないのかと思ったけど、待ってて良かったよ。


メルマガいいね!
850nobodyさん:03/03/19 15:20 ID:???
…よかった。荒らしを気にしてもう来てくれなくなるかと思った。
気に入らなければ放置してくれれば良いだけなのに…。
851nobodyさん:03/03/19 15:20 ID:???
なるほど
こんな輩がいるからいつまでたってもcgi-lib.plを使う香具師が絶えないんだな
852nobodyさん:03/03/19 15:20 ID:???
cgi-lib.plって何?
マジで使ったこと無いけど、何するもんなの?
てか必要なの?
853nobodyさん:03/03/19 15:20 ID:???
jcode.plやらcgi-lib.plを使うスクリプトが国際網から絶えないので、
わざわざ鯖に入れている鬱、、、
854nobodyさん:03/03/19 15:21 ID:???
あゆたん、サイトがあったんだね。
今まで知らなかったよ。(うぐぅ
855nobodyさん:03/03/19 15:21 ID:???
-[perl0005.cgi]-------------------------------------------------
#!/usr/bin/perl/
# 簡易掲示板

print "Content-type: text/html;\n\n";

require "cgi-lib.pl"; &ReadParse;

print "<html>\n";
print "<head><title>掲示板</title></head>\n";
print "<body>\n";
print "<hr>\n";

if($in{message}){
open W, ">> perl0005.log";
print W "$in{message}\n";
close W;
}

open R, "perl0005.log";
@log = <R>;
close R;

foreach (@log){print "$_<hr>\n";}

print "<form action='perl0005.cgi'>\n";
print "<input type='text' name='message'> <input type='submit' value='書き込む'>\n";
print "</form>\n";
print "</body></html>\n";

exit;
----------------------------------------------------------------
856nobodyさん:03/03/19 15:21 ID:???
↑注意
簡易掲示板のソースだよ。
同じフォルダに、 cgi-lib.pl をいれてね。

ボクは途中で放棄はあまりしたくないんだよね
来なくなることはないと思うよ

まあ最初の方はこうやって簡単にやってもいいんじゃないかな?
もうちょっと勉強してきたら、自分のスクリプトの中に書いていこうと思うよ。

フォームからデーターを送られてきたのを、CGI側で取得する機能があるよ。
他にもいくつか機能があるけど、代表的なのはこれだね。
857nobodyさん:03/03/19 15:21 ID:???
今日うぐぅタンのページ見たよ、メアドの時に気づけなかった自分が寒いです・・・。


cgi-lib.plって便利そうだね。
もうちっと詳しく知りたいのでぐぐってきます。
858nobodyさん:03/03/19 15:21 ID:???
ごめん、レスぬけてたね。。

うん。
ボクの名前でドメインとっちゃった。。

わぁ、ありがとう!
まあ、 cgi-lib.pl は便利なことは便利なんだけど、
ちょっと実行したときの効率があまりよくないんだよね。
また今度、 cgi-lib.pl なしで取得する方法を勉強するね。
859nobodyさん:03/03/19 15:21 ID:???
うぐぅ。

今日タイヤキアイス食った、うまかった。
860nobodyさん:03/03/19 15:21 ID:???
社団法人日本外交協会(外務省の外郭団体、会長/綿貫民輔衆議院議長)が10月に東京都払い下げの期限切れ間近の非常用備蓄食35万食を、都や政府に無断で北朝鮮に援助していたことが石原都知事のインタビューで暴露された。
この非常用備蓄食は保存性に優れたアルファ米を使っており、自衛隊も戦闘糧食として使用していることから軍事用に転用される恐れもある。
石原都知事はこの件に関して政府と国会に徹底的な調査を要求すると述べた。

「ニュース速報+」【国際】東京都の非常食が北朝鮮に、石原知事激怒2
http://news2.2ch.net/test/read.cgi/newsplus/1038560374/

ソース:石原都知事・11/29日記者会見─2:00あたりから
http://www.metro.tokyo.jp/GOVERNOR/KAIKEN/kako.htm
MXTVで22:30から再放送

社団法人日本外交協会
〒106-0041東京都港区麻布台3-1-2飯倉セントラルビル4F
861nobodyさん:03/03/19 15:22 ID:???
うは、レスが早い! なんか嬉しい(うぐっ

自分はcgi-lib使わないで取得、エンコードずっとしてきたから・・・必要性は感じないんだけど知識としてね。


またページには遊びに行くよ!
なんか雰囲気とかもよかったし、勉強できそうなこととかもありそうな予感。



次回の授業を楽しみにしてます!
862nobodyさん:03/03/19 15:22 ID:???
具体的にどう効率があまりよくない?
863nobodyさん:03/03/19 15:22 ID:???
汎用的って事でしょう。
864nobodyさん:03/03/19 15:22 ID:???
cgi-lib.plではなくCGI.pmを使え、という意味だったのだが。

865nobodyさん:03/03/19 15:22 ID:???
CGI.pmって207k、、、。
そんなもん、コンパイルしてメモリにロードされるかとおもうと
とうてい、使う気にはなれんな。
866nobodyさん:03/03/19 15:22 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  < 掲示板 (2)
 (ニE(#つo⊂#)

すっごく簡単に掲示板を書いてみたけど、どうだったかな?
やっぱり、機能が少なすぎるよね。
これからはしばらくの間、毎回少しずつ機能を足していく予定だよ。

今回の追加してみる機能は…
・名前欄を作るよ
・メール欄も作るよ
・名無しさんの名前が出るようにするよ

名前、メールは、入力欄を増やして、ログファイルに書き込むように
すれば、簡単にできちゃうよ。
名無しさんも簡単だね。

if(!$in{name}){
$in{name} = "名無しさん";
}

名前欄がなかったら「名無しさん」を代入してるね。

長くて入りきらなくなっちゃったね…
ここには重要な部分だけ書いて、全文はリンクからたどれるようにするね。
ソースはここだよ。
http://www.geocities.co.jp/SiliconValley-Sunnyvale/8274/perl/perl0006.txt

読めない、っていうときは、対象をファイルに保存、かソースを表示してみてね。

次回は、新しく置換演算子を勉強して、いろいろなことをやってみるね。
867nobodyさん:03/03/19 15:23 ID:???
レスが早いのは運だよ

cgi-lib.pl は最初だから簡単に取得するために説明してるから、
慣れてきたら自分でやったほうがいいと思うよ

うん、ボクのホームページにも遊びに来てね。
ありがとう

317もあるけど、余計な処理をしすぎっていうか、
もっと簡単に短く単純に書けるよね
まあ自力でやる方法は今度説明するね。

cgi-lib.pl を使うのも CGI.pm もメリットがあればデメリットもあるよね
Perlを考えたアメリカの人は(名前忘れちゃったけど)
「Perlは好きなように書けばよい」っていう言葉を残してるんだから、
人それぞれやり方が違ってもいいと思うな
868nobodyさん:03/03/19 15:23 ID:???
↑アメリカだったっけ…?
違ってたら恥ずかしいから、とりあえず発言撤回させて…
869nobodyさん:03/03/19 15:23 ID:???
そっか〜、ありがと
鮎タンのページの掲示板でおみくじやったら「大凶」と「最大凶」ひいちゃったよ・・・。
これも運・・・。
870nobodyさん:03/03/19 15:23 ID:???
TMTOWTDIはまさにその通り、それはいい。
だが今人に勧めるのなら既に保守更新されていないcgi-lib.plよりも
標準モジュールとして使えるCGI.pmの方が導入は容易だと思うのだが?

まあそれでもcgi-lib.pmが良いというのなら、ポリシーは人それぞれだからかまわないが。

滑稽だな。そう思うのならそもそもCGI/Perlを選択するのが間違い。
871nobodyさん:03/03/19 15:23 ID:???
授業まだ〜?
872nobodyさん:03/03/19 15:23 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  < 置換演算子
 (ニE(#つo⊂#)

前回のソースを一般公開してしまうと、JavaScriptを使ったブラクラとかも
簡単に書き込めるから、タグの < を、 < に、 > を > に
置き換える方法を勉強するね。

● =~ s/◆/★/g;

変数●に含まれる、◆を★に置き換えるよ。
◆は、変数などが使えて、正規表現で指定するよ。
★は、◆で ( ) があったら、通常の変数に加えて後方参照の $1 $2 .. が使えるよ。

じゃあ実際に例を書いてみるね。
わかると思うけど、ファイルに書き込むよりも前に処理を実行しないと意味がないよ。

$in{message} =~ s/</</g;
$in{message} =~ s/>/>/g;

じゃあ、ついでにURLの自動リンクの方法も書いておくね。

$in{message} =~ s/(http:\/\/[\w\/\.\?~&=@;#%-]+)/<a href="$1">$1<\/a>/g;

最後の、 g っていうのは、「あるだけ置き換えする」っていう意味だよ。
なんで自動リンク
正規表現のパターンの中で、 / が使いたいときは、
その前の文字に \ を使うといいよ。
print "<a href=\"http://xxx.yyy.zzz/\">ホームページ</a>";
こんな感じで print のなかに " を使いたいときも \" とするといいよ。
このへんのことは、これから先ずっと使うことになるから、必ず覚えるようにしようね。
873nobodyさん:03/03/19 15:24 ID:???
うん
そういうこともあるよ

遅れちゃってごめんね
874nobodyさん:03/03/19 15:24 ID:???
やっと正規表現まで来たね。
個人的にtrがすごく知りたいよ、まだいまいち理解してないんだよね。(恥
でも正規表現そのものが便利で難しいみたいだし、まだまだ勉強だね。

次回楽しみにしてます。返答ありがと。
875nobodyさん:03/03/19 15:24 ID:???
でも「/」がたくさんあるといちいち「\/」に書き換えないとだから大変だよね。
ということで、じつは・・・

● =~ s#◆#★#g;

なんてのも使えるんだよ。
これなら「/」が多い日も安心ですね。

・・・っていうのは次回でつか?

「1文字ずつ対応させて置換する」って表現ではどうでしょう?>tr|y
$test = '01234-02468-13579-56789';
$test =~ tr/[0-9]/[A-J]/;
print $test; # ABCDE-ACEGI-BDFHJ-FGHIJ と表示
876nobodyさん:03/03/19 15:24 ID:???
$test =~ tr/[0-9]/[A-J]/;
[]に意味はあるのかい?
877nobodyさん:03/03/19 15:24 ID:???
$testに[]が含まれると、戻り値の置換文字数が変わってくる。
878nobodyさん:03/03/19 15:24 ID:???
tr[0-9][A-B];
と書き変えておこうとして忘れてました。
スマ
879nobodyさん:03/03/19 15:25 ID:???
これから先ずっと使う前に
q, qq, qw を覚えよーょ。

クォートのエスケープは他の言語でもよく使われるから、
覚えておいて損はないけど。
880nobodyさん:03/03/19 15:25 ID:???
>pearさん
こんど♪のスクリプトも改良してほしいですぅ
881nobodyさん:03/03/19 15:25 ID:???
ここにも出たか、粘着リア厨が!
さっさと糞してねれ!!
削除依頼出しとけよ!
882nobodyさん:03/03/19 15:25 ID:???
=粘着
883nobodyさん:03/03/19 15:25 ID:???
>>335=尾瀬原必死だな
まああんな穴だらけのクリプト晒されりゃいい恥さらしだから無理もないか(藁
884nobodyさん:03/03/19 15:25 ID:???
正規表現のコンストラクタ、qr//も忘れずにな
885nobodyさん:03/03/19 15:26 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  < 展開とクオート風演算子
 (ニE(#つo⊂#)

リクエストがあったから勉強するね。

$text = "うぐぅ";
print "うぐぅ<br>\n";
print "$text<br>\n";
print 'うぐぅ<br>\n';
print '$text<br>\n';

例えば、後々の説明を楽にするために、これを実行させてみてね。
'…' で囲むと、変数名がそのまま出ちゃったり、
ちゃんと改行されなかったりすることがわかると思うんだ。
'…' では、変数やメタ文字は【展開】されないよ。
つまり、囲った文字がそのまま出る、っていうことなんだ。
"…" では、【展開】されるよ。

さっきの例のソースを、全部、
"…" で囲んであるものは、 qq{…} に書き替えができるよ。(展開されるよ)
" が、ダブルクオーテーションっていう記号だから q がふたつあるのかな。
'…' で囲んであったら、 q{…} に書き換えができるよ。(展開されないよ)
こういうのを、クオート風演算子、っていうよ。
ボクは個人的な話だけど、 print は全部 qq{…} で書いてるよ。

続くよ。
886nobodyさん:03/03/19 15:26 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  < クオート風演算子
 (ニE(#つo⊂#)

qw についても説明するね。
● = qw{★};
 ★で、半角スペースで区切った文字列を順番に配列●に代入するよ。
 これは知らなくてもそんなに影響はないと思うんだけどね…

qr は、取り扱うとしたらもう少し先になるかな…?
あといくつか、クオート風演算子はあるんだけど、代表的なものとしてこのへんで終わりにするね。

{ } って書いたけれど、一定の制約を守っていれば、 { } じゃなくてもできるよ。

一定の制約
 ・英数字以外の半角文字だったら何でもいいよ。
 ・ # を使うときは、直前にスペースがあると、コメントと間違うから注意だね
 ・カッコを使うときは、左右でペアにして使うよ。 { } ( ) [ ] < >

これは、正規表現の時にも使えるんだ。
たとえば、置換演算子の時では…

$test =~ s/xxx/yyy/g;
$test =~ s#xxx#xxx#g;
$test =~ s{xxx}{yyy}g;

これらは全部同じことを表しているよ。
それにしても、ボクはこの授業の内容は全部テキストファイルにしてるんだけど、
→ この行でちょうど1000行に達してしまうんだよね…。
ボク、よくこんなに書いたなあ…
887nobodyさん:03/03/19 15:26 ID:???
さんが上手く説明してくれてるね。
ボクにはこれ以上うまく説明はできないかな

おんぷちゃんねるのスクリプト…?
改造すべきところなんてあるかな?
どう改造してほしいか言ってくれたら、
もしかしたら1%ぐらいの確立で改造してみるかも
あと、ここでは「あゆ」って呼んでくれた方がうれしいな
888nobodyさん:03/03/19 15:26 ID:???
>342
ごめんなさいです。。。
用なし逝って話しますですぅ
889nobodyさん:03/03/19 15:26 ID:???
さん
ありがと、そっか〜つまり抜けてる部分とか余ったりするとよくないっぽいんだね。
一つずつってのがポイントみたい。
これでtrは解ったよ、ホントありがと。

うぐぅタン
だんだん難しくなってきたよ・・・。
まだ何とか付いていけてるから、次もよろしく〜
890nobodyさん:03/03/19 15:26 ID:???
334トリップ忘れた・・・(汗
891nobodyさん:03/03/19 15:26 ID:???
このすれ く さ い
892nobodyさん:03/03/19 15:27 ID:???
おまえが近づかないようにするためだよ。
893nobodyさん:03/03/19 15:27 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  < サブルーチン (1)
 (ニE(#つo⊂#)

Perlで一番重要な、サブルーチンについての説明だよ。
自分で処理を決める関数のようなものがつくれるから、ユーザー関数とかも呼ばれるよ。
サブルーチンは、「宣言」しておくと「実行」できるようになるよ。

じゃあ、宣言の方法を説明するね。
個人的な話だけど、ボクは、 { } の中に改行がくるときは、
インデントすることにしてるよ。インデントっていうのは、
行の始めにタブやスペースをいれて、始まりを右にずらすことだよ。
アンインデント、はこの逆だね。
これを使うと、スクリプトが複雑になってくると見やすくていいよ。

sub abc{
$x ++;
}

これは、変数 $x に 1 を足す、サブルーチンだね。
呼び出すには、 &abc; って書いて呼び出すよ。

サンプル。「2」って表示されるよ。
$x = 1;
&abc;
print "$x";
sub abc{ $x ++; }

サブルーチンはとっても重要で便利だから、必ずマスターしてね。
894nobodyさん:03/03/19 15:27 ID:???
うん、そうしてね。
わかってくれてうれしいよ

だんだん難しくなっていくね
わからないことがあったら気軽に聞いてね。
895nobodyさん:03/03/19 15:27 ID:???
ありがと、
とりあえず今のところ大丈夫だよ。

次は何が出てくるのか楽しみです。
896nobodyさん:03/03/19 15:27 ID:???
cgi-lib.plを使わないの簡易掲示板の作り方を教えて欲しいでつ。
897nobodyさん:03/03/19 15:27 ID:???
待て、一番重要なサブルーチンの説明がよりによって引数無し、グローバル変数操作かよ。
常識的なサンプルを提示できないなら、頼むから何もしないでくれ。はっきりいって迷惑。
898nobodyさん:03/03/19 15:27 ID:???
(1)って書いてるじゃねーか(2)があるんだろ
おとなしく待てよ行数規制があるんだから
899nobodyさん:03/03/19 15:28 ID:???
(2)はどこじゃヴぉけぇ!!!!!
900nobodyさん:03/03/19 15:28 ID:???
sub hogehoge {
 my %param = @_;

#何か

 return ...;
}
901nobodyさん:03/03/19 15:28 ID:???
>これは、変数 $x に 1 を足す、サブルーチンだね。

( ´,_ゝ`) プッ $x= 'A'でも1足すのかよ

$x= 'A';
$x++;
print $x; # これはB

$x= '?';
$x++;
print $x; # これは1

よく頭に叩き込んでおけ
902nobodyさん:03/03/19 15:28 ID:???
ゼロ文字幅
^ =>最初
$ =>最後

文字
. =文字
[..] =>文字クラス。括弧の中の、任意の1文字
[^..] =>中身以外の文字を1つ

繰り返し
* =以上
+ =以上
{n} =>n回
{n,m} =>n以上m未満
{n,}、{,m} も可能

(?:...) =>まとめるだけでいいとき
(...) =>後から$1とかで使うとき

\1 \2 \3 =>パターンマッチの中で使える。
$1 $2 $3 =>外で使う
903nobodyさん:03/03/19 15:28 ID:???
サブルーチン(1)
確かに、これだけじゃちょっと・・・

変数のスコープとか、GC,
サブルーチン内でグローバル変数を変更する事のリスクとか。
後できちんとフォローすれば大丈夫。多分。。。
904nobodyさん:03/03/19 15:28 ID:???
オタクスレ相互リンク

綾波レイのWEB制作管理教えますれ
http://pc3.2ch.net/test/read.cgi/hp/1023741627/l50
905nobodyさん:03/03/19 15:29 ID:???
漏れは普段平気でグローバル変数操作してるが。
use strictなんてきらいだよー。
906nobodyさん:03/03/19 15:29 ID:???
分かったから屑は死ね。
907nobodyさん:03/03/19 15:29 ID:???
月宮あゆのPHP教室もキボン!。
908nobodyさん:03/03/19 15:29 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  < サブルーチン (2) 返り値
 (ニE(#つo⊂#)

サブルーチンでは、返り値 (かえりち) っていうものが作れるよ。
「返り血」とか変なこと言ったら嫌だよ。

$x = &xxx; # $x には abc が代入されるよ。
sub xxx{ return "abc"; }

return ●
 …●を返り値として、呼び出し元に戻る。

ちょっとここで注意だけど、この関数は、絶対にサブルーチンの外で
使っちゃだめなんだ。戻る場所がないからね。
ふたつ以上の返り値を送りたいなら、

return ( $a, $b, $c );

みたいに配列にして送るといいよ。
受け取るときは、

( $a, $b, $c ) = &xxx;

こうやって受け取ることができるよ。
それか、配列をあらかじめ作っておいて、

return @xxx;
@xxx = &xxx;

みたいなこともできるよ。
909nobodyさん:03/03/19 15:29 ID:???
もうすこし先で勉強するからもうちょっとまってね。

サブルーチン、はとりあえず (4) か (5) まで続くと思うよ。
今は (4) の途中まで書いてるからね。。

確かに、オートインクリメント演算子は、「1足す」じゃなくて、
「値を1増加させる」っていう機能なのはその通りなんだけど、
そんな扱ってないようなことを勝手に進めないで。
先に「省略してるところもある」ってちゃんと言ってるんだから。
そんなことはあまり知る必要ないんじゃない?

必要最小限のことは付け足すからね。

ボクはPHPはほとんどできないんだよね。。
勉強するにもPHPの入門書が数ないからねえ。。
910nobodyさん:03/03/19 15:30 ID:???
返り値と戻り値って、どう違うの?ダレカオシエテ
911nobodyさん:03/03/19 15:30 ID:???
重箱の隅をつつくようだけど、実はサブルーチンの外でもreturnを使えるケースがあるんだよね。
標準ライブラリの中にもその使い方をしているものもあるよ。

ところで、-wスイッチとuse strictの説明の予定はあるの?
コーディングを楽にするためにも、まずその説明をした方が良いと思うね。

同じ意味だと思うよ。
912nobodyさん:03/03/19 15:30 ID:???
ありがと。戻り値でも通じるんだよね?
よかった、前から気になっていたんだ。
913nobodyさん:03/03/19 15:30 ID:???
use strict;無しで書くほうが、後から面倒なことになる。げぼ。
914nobodyさん:03/03/19 15:30 ID:???
くさい
915nobodyさん:03/03/19 15:30 ID:???
すいません、教えて下さい
foreach
これってフォーイーチ?
フォーリーチですか?
気になって仕方ないです…
お願いします。
916nobodyさん:03/03/19 15:30 ID:???
for eachだから、そのように。
917nobodyさん:03/03/19 15:31 ID:???
f or each
918nobodyさん:03/03/19 15:31 ID:???
それはあんまりです(笑
919nobodyさん:03/03/19 15:31 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  < サブルーチン (3) 局所化
 (ニE(#つo⊂#)

サブルーチン、といえばこの関数はよく出るから覚えておいてね。
my と、 local と、 return だよ。
return は、もう勉強したからいらないね。
じゃあ、今回は my と local について勉強するね。これはほとんど同じ意味だよ。
だから、ここでは同じものとするね。いつか機会があれば、説明するね。

my ●;
local ●;
 …どっちも、変数●または配列●を、そのサブルーチンの中だけで
  有効にする、っていうことだよ。
  my 宣言された変数を、プライベート変数、 local はローカル変数、っていうよ。
  逆に、スクリプト全体で使える変数をグローバル変数、っていうよ。
  【いちばん内側の { } で囲まれた範囲だけで有効な変数】っていうことかな。
  この有効範囲を、スコープ、っていうよ。

my $xxx; # $xxx を my 宣言する
$xxx = "abc"; # 前の行で my 宣言されている
$yyy = $xxx; # $yyy は my 宣言されていない
my $zzz = "xyz"; # $zzz はここで my 宣言される

じゃあサンプルだよ。

$my = "abc"; $test = "abc";
&xxx;
print "my 宣言した変数=$my<br>\nしてない変数=$test";

sub xxx{ my $my = "xyz"; $test = "xyz"; }
920nobodyさん:03/03/19 15:31 ID:???
うん、同じだね

eval の中かな?
eval はまだ取り扱ってないから、出てきたときに説明しようと思って、
こんなところで「eval」って出したら混乱する人もいそうだから、
あえて説明しなかったんだよね。。

-w とか strict は、知っておいた方がいいことだろうね。。
-w は未定だけど、 strict はそのうち勉強する予定だよ。

ふぉーいーち、だと思うよ
921nobodyさん:03/03/19 15:31 ID:???
このあゆ、息臭いなあ
このあゆ、汗っかきだなあ
このあゆ、ワキガ??
922nobodyさん:03/03/19 15:31 ID:???
      _ _
     〃┏━━ 、
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ *´ー゚*リ <  うぐぅ♪
  ((ニE/⌒ヾ∞"ヽ   \____________
    (こ)   ∞ |こ)
    く__∞,ノ
    し' し'
923nobodyさん:03/03/19 15:31 ID:???
           / ̄ ̄\
           | う う  |
           |  ぐ   う / ̄ ̄ ̄ ̄ ̄ ̄
           |  ウ  | < うげぇ
           \__/  \______
.          r‐-i^i´`||iii》ヽ
         (_| | i/二フ.〉
            (__|_ゝ、__[]_ア
               /  l| |
           /fヨI 中|
          く     l| |
           ` ‐r-十!
             ノ  ! !
               /ゝ,/ー|
           /  /l  |
            / f《 |fヨ |
.             \_)_ノ
924nobodyさん:03/03/19 15:32 ID:???
ヴ?
925nobodyさん:03/03/19 15:32 ID:???
そういえばevalもそうだっけ。でもそれ以外にもあるよ。
実はrequireされるライブラリファイルの中だとreturn出来るんだよ。
例えばAnyDBM_Fileがそうしてる。
ま、普通は使わない機能だけどね。
926nobodyさん:03/03/19 15:32 ID:???
perldoc -f return
subroutine, eval, do FILE ... みたいですね。
ライブラリの中って言うのは、よくモジュール等の最後に 1; ってやるけど
あれって、return が省略されていたんだ?

そういえば、sub 内でも定数とかを返すだけのサブルーチンでは
return省略してるの良く見かけるよなぁ
927nobodyさん:03/03/19 15:32 ID:???
> あれって、return が省略されていたんだ?

ちょっと違う。
returnがない場合、最後に評価された式の結果が返される。
1; というのは式1;の値は1だから1が返る。

…って動作のはず。
928nobodyさん:03/03/19 15:32 ID:???
日本語のページからうぐぅを検索しました。 約56,500件中1 - 50件目 ・検索にかかった時間0.09秒

929nobodyさん:03/03/19 15:33 ID:???
Perlのクラスは何であんなにヘンテコですか?
930nobodyさん:03/03/19 15:33 ID:???
あんなにってどんなに?
931nobodyさん:03/03/19 15:33 ID:???

睾丸無知
932nobodyさん:03/03/19 15:33 ID:???
は睾丸ですか?
933nobodyさん:03/03/19 15:33 ID:???
あゆタンはやく続きおせーて
934nobodyさん:03/03/19 15:33 ID:???
しぼーん
935nobodyさん:03/03/19 15:33 ID:???
(´・ω・`)ショボーン
936nobodyさん:03/03/19 15:33 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  < サブルーチン (4) 引数
 (ニE(#つo⊂#)

引数、っていうのは、「ひきすう」って読むらしいよ。
ボクはこのあいだまで、「いんすう」だって思ってたんだけど。。

サブルーチンから値を持って戻る、っていうことをやったね。
じゃあ次は、値を持ってサブルーチンを実行するっていうことをやるね。

&xxx("abc", "123", "あいう");

こんな風に呼び出すと、特殊配列 @_ に頭から代入されて呼び出されるよ。
当然、

@list = ("abc", "123", "あいう");
&xxx(@list);

と同義だよ。

この辺の話を覚えて、次回は、名無しさんならエラー、っていう
ソースに改造してみるよ。

#投稿が遅れてごめんね。
#遅れてもdat落ちや削除されない限り途中で放棄することはないからね。。
937nobodyさん:03/03/19 15:34 ID:???
そうなんだ‥
知らなかった
ちょっと恥ずかしいな

えっ
そんなにあるのっ?!
なんだかすごいね

Perl、ってクラスって言うのかな…?
呼び方とかよく知らないや。。

遅れてごめんね。
938nobodyさん:03/03/19 15:34 ID:???
キタキタキター
939nobodyさん:03/03/19 15:34 ID:???



月宮あゆのPHP教室きぼんぬ


940nobodyさん:03/03/19 15:34 ID:???
このスレほんと勉強になりました。
で、PHPの勉強にすることにしたので、
おれもPHP教室を希望します。
ちょっとづつでいいのでお願いしたいです。
941nobodyさん:03/03/19 15:34 ID:???
いまさらPerl勉強しても需要も無い仕事無い
942nobodyさん:03/03/19 15:34 ID:???
確かに今さらPerlっつってもね。
でも、月宮あゆ君はよくがんばってると思うよ。
今後もがんばってもらいたいね。Perlで移行!!。
943nobodyさん:03/03/19 15:35 ID:???
perl今勉強中なんだが需要無いのか・・・
いや、なにか役立つでしょ。うん。

それとも先にcかphpを勉強した方が良いのか・・・?
944nobodyさん:03/03/19 15:35 ID:???
レスどもです。
Perlは勉強していきます。役には立ちますよね。

次にPHP、そしてCという順にやっていきます。がんがります。
945nobodyさん:03/03/19 15:36 ID:???
Perlは今後、使用者は減るけど使えないわけじゃないから勉強してもいいと思うよ。
でも、最終的にCするんだったら、ぼくはPHPを強く勧めるよ。
Perlから始めちゃうとPerl独自の癖がつくのでPerlしかできなくなる危険性があるので、
PHP勉強した後、Perlを勉強したほうかいいかもしれないね♪ がんがれ!
946nobodyさん:03/03/19 15:36 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  < エラー画面を作る
 (ニE(#つo⊂#)

じゃあ、まずはソースだよ。
ttp://www.geocities.co.jp/SiliconValley-Sunnyvale/8274/perl/perl0007.txt

&error("エラーメッセージ");

としてサブルーチンを呼びだすと、
( 特殊配列 @_ の0番目の要素だから $_[0] )
エラーメッセージが $_[0] に入って参照するようになってるよ。

こういうエラーのサブルーチンはよく見かけるね。
ぜひ使えるようにしようね。

次回は、環境変数について勉強するね。
947nobodyさん:03/03/19 15:36 ID:???
うん、遅くなってごめんね

ボクも今、PHPは勉強してるところなんだよね
ちょっとボクにはできそうにないよ
ごめんね

確かにこれからはPHPの時代に変わっていくかもしれないね。

elsif 、とかPerl以外にみたことないよ。。
948nobodyさん:03/03/19 15:36 ID:???
俺の鯖、CGI使えんのだが…お奨めはあるかね。
949nobodyさん:03/03/19 15:36 ID:???
Python だと elif
PHP では、 elseif, else if
Perl で、無理に独自のスタイルに馴染まなくても
C ライクなプログラミングも出来るよ。
950nobodyさん:03/03/19 15:36 ID:???
ソースのHTMLが解釈されて見にくいぽ。。。
951nobodyさん:03/03/19 15:37 ID:???
メリークリスマス

あゆタン
952nobodyさん:03/03/19 15:37 ID:???
ヘッダのContent-Typeを無視して勝手に中身を判断する
IEを恨みましょう。
953nobodyさん:03/03/19 15:37 ID:???
>Perl で、無理に独自のスタイルに馴染まなくても
>C ライクなプログラミングも出来るよ。

独自スタイルを使わずしてPerlは動くのか?
C知らずしてCライクは無理だろ。もうちと考えてかけよ。
954nobodyさん:03/03/19 15:37 ID:???
(´・ω・`)
955nobodyさん:03/03/19 15:37 ID:???
年末年始は来てくれないのかなぁ。サイトも更新中みたいだし。
956nobodyさん:03/03/19 15:37 ID:???
ヒキコモリヲタのくせに生意気だな。
957nobodyさん:03/03/19 15:38 ID:???
オマエモナー
958nobodyさん:03/03/19 15:38 ID:???
elsifじゃなかったっけか?
959nobodyさん:03/03/19 15:38 ID:???
Pythonが?
960nobodyさん:03/03/19 15:38 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  < 環境変数 (1)
 (ニE(#つo⊂#)

環境変数っていうのを勉強するね。

環境変数は、 %ENV っていうハッシュに入ってるよ。
特に何もしなくても、実行すると自動で使えるよ。
これは、プログラムのどこでも使える、グローバル変数だよ。

じゃあ、全部の環境変数を表示してみようね。

foreach (keys %ENV){
print qq{$_:$ENV{$_}<br>\n};
}

ここで出てきた、 keys について説明すると、
「ハッシュのキーを全部とりだす」っていう感じだよ。
このへんはまた今度やろうね。

よく使う環境変数を説明するね。
$ENV{REMOTE_ADDR} : リモートアドレス(IP)が入ってるよ。
$ENV{REMOTE_HOST} : リモートホストが入ってるよ。
$ENV{HTTP_USER_AGENT} : 使ってるブラウザとかのデータが入ってるよ。
$ENV{HTTP_REFERER} : そのページへのリンク元アドレスが入ってるよ。

こんな感じかな。
次回は他の環境変数と、スペースがあまったら実用例を書いてみるね。
961nobodyさん:03/03/19 15:38 ID:???
あけましておめでとう、今年もよろしくね

無料サーバかな?
規約違反するなら infoseek かトクトク
規約違反しないなら XREA がいいと思うな

Python なんて言語聞いたことない…
他は聞いたことあるけど。。

ボクもよくわからなかったんだけど410さんが言うにはIEの仕様みたいだね・・・
これはしかたないね

今は、あけましておめでとう、っていう時期になっちゃったね
ごめんね

見てくれてたのかな、ありがとうね
これからできるだけ顔を出したいと思ってるんだけどね
最近いそがしくて・・
962nobodyさん:03/03/19 15:38 ID:???
あけおめ、ことよろ、ガンガレ
963nobodyさん:03/03/19 15:39 ID:???
あゆタン
964nobodyさん:03/03/19 15:39 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ
 (ニE(#つo⊂#)
965nobodyさん:03/03/19 15:39 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  < 環境変数 (2)
 (ニE(#つo⊂#)

他の環境変数だよ。
環境に依存するものとか、まったく使わない、と思うのは省いたよ。

$ENV{REQUEST_METHOD} : リクエストされたメソッドだよ。普通は GET か POST だよ。
$ENV{HTTP_HOST} : そのスクリプトが動作してるサーバのアドレスだよ。
$ENV{QUERY_STRING} : xxx.cgi?xxxx っていう感じでアクセスされたら、 ? 以降の文字が入ってるよ。
$ENV{CONTENT_LENGTH} : 送られたデータの総容量だよ。
$ENV{HTTP_COOKIE} : クッキーの情報がはいってるよ。

あとは、プロキシの判断をするときに、

HTTP_CACHE_INFO HTTP_FORWARDED HTTP_IF_MODIFIED_SINCE
HTTP_PROXY_CONNECTION HTTP_VIA HTTP_X_FORWARDED_FOR

とかの環境変数を目安にすることもあるね。

じゃあ、次回は、掲示板に書き込んだ人のリモートホストを解析して、
保存するように改造してみるね。

※ $ENV{REMOTE_HOST} では取得できないサーバーが最近増えてるよ。
  こんなサーバーは、 gethostbyaddr 関数を使わないといけないんだけど、
  使い方はまた今度説明するね。
  gethostbyaddr 関数も使えないサーバーもあるらしいよ。。
  こんなサーバーは(たぶん)どうやってもホスト名は取得できないよ。
  わからないことがあったら、サーバーの管理人さんに聞いてね。
966nobodyさん:03/03/19 15:39 ID:???
おめでとう、今年もよろしくね。

ん?なに?

Janeで読んだら「ここ壊れてます」、って言われる
なんでだろう
967nobodyさん:03/03/19 15:39 ID:???
取得するときになんか障害が起きたから。
968nobodyさん:03/03/19 15:39 ID:???
誕生日おめでとう>あゆあゆ
969nobodyさん:03/03/19 15:40 ID:???
(´Д⊂ヽ・゚。 ウワァァァァアァァン あゆあゆ〜
970nobodyさん:03/03/19 15:40 ID:???
???
971nobodyさん:03/03/19 15:40 ID:???
そういや1月7日はあゆちゃんの誕生日だったっけ。
おめでと〜。

関係ないけど、
このスレでの「月宮あゆ」は共有コテにして、トリップだけ別々にすればいいと思うが。
俺は「C言語CGI」スレの住民だけど、あゆのレスが面白くてこっちにもいてみたり。
972nobodyさん:03/03/19 15:40 ID:???
つぅかnobodyさん−>月宮あゆ

を提唱しようではないか。と。

取りあえず次スレはWebProg総合スレにして欲しいっす。
初心者スレとかも良いかもね。
973nobodyさん:03/03/19 15:40 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  < 環境変数 (3)
 (ニE(#つo⊂#)

じゃあ、掲示板に書きこんだ人のホストを記録するよ。
簡単に言うと、ログファイルに記録すればいいんだけど、
ログファイルにそのまま記録しちゃうと、読む人にホストが見えちゃうんだよね。
たぶんここにいる人たちはホスト開示、っていうのは嫌だと思うんだ。
コメントにする、っていうのも、ソースを見られたらばれちゃうよね。

じゃあ、こんなことをしてみよう。
書きこむときに

<a href='mailto:メール'>名前</a>>メッセージ

っていう書き方をやめるんだ。こうじゃないとホストが筒抜けになっちゃうからね。
じゃあ、ホストを記録できるようにするには、

<a href='mailto:メール'>名前</a>>メッセージ(ホスト)

みたいにして、表示するときに消してやるといいよ。
表示する欄をいじってみるね。

foreach (@log){
$_ =~ s/\([\w\.-]\)\n$//;
print "$_<hr>\n";
}

でも、このままだと穴があるよ。
行数が入らないから次回にまわすね。
974nobodyさん:03/03/19 15:40 ID:???
なぁ、データフォーマットの時点でなんか痛くない?
975nobodyさん:03/03/19 15:41 ID:???
うーん・・・
できればsplitあたりを使って今回やりたかったんだけど
行数が入らないからフォーマットは次回まわしかな
976nobodyさん:03/03/19 15:41 ID:???
俺はっす。
重要な語句が抜けてますた(*´Д`)
質問に「答える人達が」共有であゆコテを使おうってことを言いたかったんだ。
「◆XalkKQX1is」あゆ一人だけだと、負担がかかるんじゃないかと思ったから。
気の回しすぎだったらごめん。
軽い気持ちで吊ってくるっす。
977nobodyさん:03/03/19 15:41 ID:???
ィ`
978nobodyさん:03/03/19 15:41 ID:???
それなら、AYUAYUっていうトリップ探して付けてみたら?
そっちの方が雰囲気出るかも
ただ、◆Xalk..も◆AYUAYU..も掲示板でpassを晒したら、
関係ない奴が偽物として入ってくると言う痛い罠
passの配布方法はどうするの?
979nobodyさん:03/03/19 15:42 ID:???
パスワード パスと呼ぶ奴 厨房さ 
980nobodyさん:03/03/19 15:42 ID:???
password path
981nobodyさん:03/03/19 15:42 ID:???
そのためわざわざ英字で書いたんだけど....
自分ダメダメっすね(^.^;
982nobodyさん:03/03/19 15:42 ID:???
共通トリップ付けるのに偽物がどうこうとか言うなら
いっそトリップ付けなきゃ(ry

もしくはID表示させれば(ry
983nobodyさん:03/03/19 15:43 ID:???
とりあえず、あゆが来るまで保守
984nobodyさん:03/03/19 15:43 ID:???
(^^)
985nobodyさん:03/03/19 15:43 ID:???
あゆあゆ.com.うぐぅ・・・。(^−^)
986nobodyさん:03/03/19 15:43 ID:???
あゆage
987nobodyさん:03/03/19 15:43 ID:???
COBOLってどうなんすか、、、
いまどき(仕事以外で)使ってる人いるんすかねえ、、、
988nobodyさん:03/03/19 15:43 ID:???
全部読んだが全く知識のない自分には当然全く分からない
電2>基礎から丁寧に説明してくれるので非常に分かりやすい
989nobodyさん:03/03/19 15:44 ID:???
電2に載るのはうれしいけど、肝心のあゆあゆが降臨してくれないからなぁ
降臨きぼーん
990nobodyさん:03/03/19 15:44 ID:???
ヲタドモが騒いでるな
電2ってなによ
991nobodyさん:03/03/19 15:44 ID:???
電波2ちゃんねる
992nobodyさん:03/03/19 15:45 ID:???
1は食い逃げの常習犯なので逮捕します
993nobodyさん:03/03/19 15:45 ID:???
通りすがりのたい焼き屋さんが住むスレはここですか?
994nobodyさん:03/03/19 15:45 ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  < ログファイル (1)
 (ニE(#つo⊂#)

前回はホストの記録をやってみたわけだけど、実は拡張子が、
.cgi とかじゃないファイルは、外部から参照されちゃうことがあるんだ
(でも、基本的にサーバーの設定に依存するよ)
log.cgi か何かにリネーム(名前を変更)して、スクリプトも少し
書き直したらこの問題は解決されるね。

じゃあ今回は、少し重い掲示板を作る、っていう想定でやってみるね。
ここでは表示欄にテーブルを組ませたりするよ。
ちょっとここで考えてみると、前回までと同じように、ログファイルに
書き込んでると、容量がどんどん大きくなっちゃうよね。
それは困る、っていうことで、一般的な掲示板では、【区切り文字】を
使って、名前、とかの要素を区切って保存してるよ。

2ちゃんねるでもこれは同じだよ。
http://pc.2ch.net/php/dat/1014096840.dat

名前<>E-mail<>投稿日<>本文<>(サブジェクト)

っていう感じに <> で区切られて保存されてるのがわかると思うよ。
区切り文字は、 <> が一番メジャーで、次に , とか : とか | を見るね。
別に何でもいいんだけどね。でも、本文にその区切り文字があると、
そこで区切られちゃうから、それを避けるようにすればいいね。
じゃあ、今回は

名前<>E-mail<>投稿日<>本文<>ホスト

っていう形式でやってみることにするね。
995nobodyさん:03/03/19 15:45 ID:???
うーん・・
ボクは別にそれでもいいけど
結構大変な仕事を継続してやってくれる人はいるかな…?
いるならボクは大歓迎だよ

トリップのキーはすぐに割れそうな気がするキーなんだけど…
えっと、他のスレでもこのトリップ使ってるから、
公開するつもりはあまりないよ、ごめんね

COBOL…?
ごめん、聞いたことないよ。。

えっ?!
今みてみたけどホントに掲載されてるね
うれしいよ、今度からも頑張るから応援してね

そんな難しいこと書いてるかなぁ…
どのへんから分からないのか教えてほしいな

遅くなってごめんね

スレ違いだよっ!
996nobodyさん:03/03/19 15:46 ID:???
あゆあゆ降臨
キタ─wwヘ√レvv~(゚∀゚)─wwヘ√レvv~─ !!!
俺はスローペースでもOK
てか、あゆあゆは一人であとは普通に教えあえばいいと思うよ。
997nobodyさん:03/03/19 15:46 ID:???
月宮あゆの中の人も大変だな。
998nobodyさん:03/03/19 15:46 ID:???
    _ _
  〃┏━━
  ( )   ( )
  (.〆⌒ヽ )
  (∴゚ρ゚∴) < いないよ  ( £ £ )
  ( £ゑ££ )
  (££ゑ£)
  |. ノノソハ)))
(\リリ ´ー`)リ
 (ニE(#つo⊂#)
999nobodyさん:03/03/19 15:46 ID:???
                        n
                  A_I_R_ノ V|
                        `''´
The days which are wrapped in the scene of summer and to pass gently
        An encounter with the girls repeated in the sunlight
           Summer continues to where as well
                 She is waiting in the air

                    __(/__
                  ,.-'´    `ヽ
                 r'´  ゝ'   `ヽ
                 { "''     " ii}
                 li       i i ii
                 _i_i i    i i_リ'_
               <___,.ニ=‐-‐- <__>;
.                }/      \`ヽ. イ
               /, , ' i i i 、 \ ヾ i {
              /イ! i ! i i瓜_ト、_`丈_ヽヾ.K 
              /!、、、v'frj「 ; `'}rj`yi`.l \____ 
.             ん'^iハ、ヾヽ´  ワ `゙ハ l !ト ノ´し'⌒`
             l:::::::`ーi i`i::`  .__, イi ii !il:::::::l 
             l:::::::::::,' .'/:::::::r‐w‐ヵ:、 ii i l::::::l 
             l:::::::; ' ム' ‐''`Y^r '` ‐- 、ヽ:::|
             l::/,ィ´ベ   ;゙†.!   /∧ \
             //::::|,'  〉、、 ,','  ゙、  /∧ ヽ、 ヽ、
          //l::::::::/  {  V/ 、 /〉,'./::::}  ヾメ、 ゙ヽ、
         / / く::::く   ゝ、::::\ /:::::::::ノ /l  `ヽ ヽ
         ,' ,'   \::`コ==}   `' ::::::{==「::::::j    }  }
         { {,,. ‐,.ニ"-‐=ニレ'` ー--‐ァ''´\j::/     ノ ノ
         ゝ. V´   _,,. ‐''"     /  ハ\   / /
1000nobodyさん:03/03/19 15:46 ID:???
月宮あゆ ◆XalkKQX1is つまらんぞ。
シロウトがでたらめばかり書くな。