月宮あゆのPerl教室 Part.4
レス数が1000を超えています。これ以上書き込みはできません。
0001月宮あゆ
02/02/19 14:34ID:???〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < うぐぅ♪
((ニE/⌒ヾ∞"ヽ \____________
(こ) ∞ |こ)
く__∞,ノ
し' し'
0002名無しさん@お腹いっぱい。
02/02/19 14:39ID:???0003名無しさん@お腹いっぱい。
02/02/19 15:10ID:???0004名無しさん@お腹いっぱい。
02/02/19 15:14ID:???0005名無しさん@お腹いっぱい。
02/02/19 16:45ID:???0006名無しさん@お腹いっぱい。
02/02/19 16:58ID:???0007名無しさん@お腹いっぱい。
02/02/19 23:41ID:???0008名無しさん@お腹いっぱい。
02/02/19 23:43ID:???〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < うぐぅ♪
((ニE/⌒ヾ∞"ヽ \____________
(こ) ∞ |こ)
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
く__∞,ノ
し' し'
0009名無しさん@お腹いっぱい。
02/02/20 00:02ID:???0010名無しさん@お腹いっぱい。
02/02/20 00:07ID:???>8
なんかそういう人形が大阪の食い物屋の店頭にあるよな。
0011名無しさん@お腹いっぱい。
02/02/20 00:25ID:???0012名無しさん@お腹いっぱい。
02/02/20 00:34ID:???何の事かさっぱりわかりません。
0013名無しさん@お腹いっぱい。
02/02/20 00:39ID:???〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < COMMON GATEWAY INTERFACE
((ニE/⌒ヾ∞"ヽ Httpサーバとプログラムを繋ぐためのインターフェース規格(?)
(こ) ∞ |こ) CGIの条件とは
| ∞,| ・そのサーバで実行できる形式である。
| ∞,| ・標準入力/出力を扱える。
| ∞,| ・環境変数を取得できる。
| ∞,| なんだよ。
| ∞,|
| ∞,| これさえ満たしていれば言語は問われないんだ。
| ∞,| テキスト処理が得意なPerl君と高速で使える人が多いC君が
| ∞,| 主に使われてるよ。
| ∞,|
| ∞,| もちろん、PascalやLISP(?)、RUBYなどもOK。
| ∞,| WIndowsNTがサーバならVBもつかえるんだよ。うぐぅ。
| ∞,| \____________
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
く__∞,ノ
し' し'
0014名無しさん@お腹いっぱい。
02/02/20 00:46ID:???0015名無しさん@お腹いっぱい。
02/02/20 00:53ID:???0016名無しさん@お腹いっぱい。
02/02/20 01:12ID:???〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < 逃げる直前まで、「お金を払うよオーラ」を出すんだよ。
((ニE/⌒ヾ∞"ヽ \____________
(こ) ∞ |こ)
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
く__∞,ノ
し' し'
0017名無しさん@お腹いっぱい。
02/02/20 01:16ID:???一行レスの時は胴体短くして下さい。
容量の無駄ですし。
0018名無しさん@お腹いっぱい。
02/02/20 01:23ID:???〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < 了解です。
((ニE/⌒ヾ∞"ヽ \____________
 ̄し'し'  ̄
0019名無しさん@お腹いっぱい。
02/02/20 01:40ID:???あんた、極端だな(笑)
0020名無しさん@お腹いっぱい。
02/02/20 01:54ID:???0021名無しさん@お腹いっぱい。
02/02/20 03:21ID:???す、すげぇ・・・
マトモ過ぎるレスが返ってきた・・
0022あゆあゆ ◆AYU.J0rE
02/02/20 09:18ID:1Y5hFUx3どこに通ってるかって?秘密だよ♪
あゆがわかる簡単な質問なら答えるよ。
0023あゆあゆ ◆AYU.J0rE
02/02/20 09:18ID:???0024名無しさん@お腹いっぱい。
02/02/20 12:19ID:???0025名無しさん@お腹いっぱい。
02/02/20 21:51ID:???0026名無しさん@お腹いっぱい。
02/02/20 22:32ID:???〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < 何でも聞くべし。
((ニE/⌒ヾ∞"ヽ \____________
 ̄し'し'  ̄
0027名無しさん@お腹いっぱい。
02/02/20 22:43ID:jTfqjt4Z0028名無しさん@お腹いっぱい。
02/02/20 22:56ID:???無限ループ。
0029名無しさん@お腹いっぱい。
02/02/21 00:10ID:???0030名無しさん@お腹いっぱい。
02/02/21 04:18ID:???whiteってどんな関数だよ。
0031名無しさん@お腹いっぱい。
02/02/21 09:51ID:RO5/QDf2ぐは、whileじゃなかった・・・。無限ループ発言撤回。
0032名無しさん@お腹いっぱい。
02/02/21 17:22ID:piBirvYG0033名無しさん@お腹いっぱい。
02/02/21 17:36ID:???0034606
02/02/23 01:12ID:???0035名無しさん@お腹いっぱい。
02/02/24 18:28ID:RsG30jwz0036名無しさん@お腹いっぱい。
02/02/24 18:44ID:???どうしてelsif,last,redoなんですか
0037名無しさん@お腹いっぱい。
02/02/24 19:11ID:???_ _
〃┏━━ 、
| )
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < パクったんじゃなくて意識しただけだからだよ。
((ニE/⌒ヾ∞"ヽ 自分がこっちの方がいいと思ったら変更すればいい。
(こ) ∞ |こ) Perlは効率を優先した言語だからね。
く__∞,ノ else ifとするより2文字稼げる?
し' し' 多分コンパイルの時点で最適化されるのかな?
\____________
0038名無しさん@お腹いっぱい。
02/02/25 21:50ID:???ttp://www.webk.co.jp/singer/image.jpg
0039名無しさん@お腹いっぱい。
02/02/25 23:56ID:???オススメを一通り教えてホスイ マヂで
(逆でもOK、 :このテスト方法はこういうときに便利)
モジュールいろいろ豊富なのはイイんですが、
オレみたいなヘボーンPGはどれを選んで良いのか、
上手い答えがなかなか出せませんので、参考にさせてください
0040名無しさん@お腹いっぱい。
02/02/26 00:18ID:???〃┏━━ 、
| )
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < 基本だけどテストケースをしっかり作ってホワイトボックステスト。
((ニE/⌒ヾ∞"ヽ 職業プログラマじゃないからあんまり詳しくないよ。うぐぅ。
(こ) ∞ |こ)
く__∞,ノ
し' し'
\____________
0041名無しさん@お腹いっぱい。
02/02/26 01:19ID:???ありがd
0042sage
02/02/26 01:58ID:whPHUYwK主に使われてるっつー割にPerlと違って(CGIの)専門書見かけないのはなんででしょ?
0043名無しさん@お腹いっぱい。
02/02/26 02:02ID:???0044代理
02/02/26 02:21ID:???〃┏━━ 、
| )
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < この辺なんてどうでしょ? 他にもあったと思うから探してみます。うぐぅ。
((ニE/⌒ヾ∞"ヽ \http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/
(こ) ∞ |こ) \____________
く__∞,ノ
し' し'
0046名無しさん@お腹いっぱい。
02/02/26 08:09ID:???_ _
〃┏━━ 、
>− )
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < 変なこと言うけどPerl/CGIの入門書。
((ニE/⌒ヾ∞"ヽ 上にも書いたけどCGIはある条件さえ満たせば言語は問われないんだ。
(こ) ∞ |こ) 無理してCでの入門書を探すより腐るほど出てる詳しいPerlでの本の方が参考になるよ。
く__∞,ノ 上にも書いたけどPerlはCとかなり似ているから結構読めるよ。
し' し'
暇だから簡単にまとめておくね。
POSTの場合、データは標準入力に入る。
GETの場合、データは環境変数QUERY_STRINGに入る。
リモートホストなどのステータスは環境変数に入る。
出力は標準出力に対して行う。
出力の前にprintf("CONTENT-TYPE: text/html\r\nr\r\n");を忘れないでね。
うぐぅ。あんまり祐一の役にたてなかった気がするよぉ。
0047yani ◆NSktNEdQ
02/02/26 08:14ID:eIw9sfNX(1) CでCGIを組めるサーバは一般人用にはあまりなく、従って売れ行きが期待できない
(2) CGIは結局引数というか、動作条件を環境変数から得てテキスト(HTML)を吐く
ある意味ごく普通のプログラムが基本である
あたりかな。
0048yani ◆NSktNEdQ
02/02/26 08:15ID:eIw9sfNXタイミング良いね。
0049名無しさん@お腹いっぱい。
02/02/26 08:21ID:???追加
_ _
〃┏━━ 、
| )
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < Perl >>>>>>>>>>>>>>>>>>> Cだからだよ。
((ニE/⌒ヾ∞"ヽ 可変長のデータ扱うことが多かったり文字列を分割することもしばしば。
(こ) ∞ |こ) 言語仕様は妙だけどテキスト処理に強いPerlの方が簡単にかけるんだ。
く__∞,ノ けど、その代償は大きくて処理速度とシステム負荷は大きい。
し' し' それで、高速かつふざけた量のデータを処理する場合にはやむなくCを使うんだ。多分。
それと、Cがコンパイル言語だと言うことも問題だよ。
CでCGIを組んだ場合、サーバで動くコードにコンパイルしなくちゃいけないんだ。
(たまに.cを.cgiに変えたのに動きません。ってかわいい初心者がいるね。)
でも、無料または一般用プロバイダが提供するサーバでGCC(CC Cコンパイラ)を
提供しているところはtok2しかないよ。うぐぅ。
そもそもtelnetが使えるところも少ないんだよ。
ローカルでサーバと同じOSを使えばいいんだけどスマートじゃないよね。
(クロスコンパイルという手もある。)
その点Perlはインタプリタ(正確には違う。)。ソース互換は大抵の場合保証されているからお手軽なんだ。
C/CGIの教科書を書こうとすると、
「サーバ上でgccを使うってどうやるんですか?」
って質問が殺到するから書きにくいのかもね。
005042
02/02/26 12:02ID:???標準入力/出力と環境変数の取得方法(>>44 のページにしっかりあった)さえ知ってれば
普通に組めそうれすね(当方、Perlはそこそこ書けるのでした)
本がないのは結局、CのCGIが一般向けじゃないってことですかね。
0051名無しさん@お腹いっぱい。
02/02/26 12:08ID:???0052名無しさん@お腹いっぱい。
02/02/26 12:30ID:???これも微妙に違うような気もするけど、
ttp://www.aifis.ne.jp/heat/assistant/perl-intro.html
とか。
perldoc perlrunとかやるといきなり「Perlインタプリタ」って文字が出てきて鬱。
0053名無しさん@お腹いっぱい。
02/02/26 14:13ID:???XREA( http://www.xrea.com/jp/ )もgcc逝けるよ。SSHで。
0054名無しさん@お腹いっぱい。
02/02/26 21:25ID:???〃┏━━ 、
| )
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < ソースは忘れたけど、スクリプト実行時にコンパイルしてその後に実行してるんだって。
((ニE/⌒ヾ∞"ヽ 怖い人たちにたたかれたらやだから思わせぶりな書き方にしちゃったよぉ。
(こ) ∞ |こ) ごめんなさい。
く__∞,ノ >>53
し' し' 案外あるんだね。gcc OKのところ。
0055名無しさん@お腹いっぱい。
02/02/26 22:07ID:???005636
02/02/26 22:12ID:???正規表現の最後のoってあるじゃん。
m/foo/bar/o <-これ
これとか、コンパイルする部分とその場で実行する部分があることを感じさせてくれるよね。
005751
02/02/26 22:25ID:???0058名無しさん@お腹いっぱい。
02/02/28 19:06ID:???/∵∴∵∴\
/∵∴∵∴∵∴\
/∵∴<・>∴∴.<・>|
|∵∵∵/ ○\∵|
|∵∵ /三 | 三| | / ̄ ̄ ̄ ̄
|∵∵ | __|__ | |< うるせー馬鹿!
\∵ | === .|/ \____
\|___/
______.ノ (⌒)
//::::::::|-、 ,-/::::::ノ ~.レ-r┐
/ /:::::::::::| /:::::ノ__ | .| ト、
| /:::::::::::::::| 〈 ̄ `-Lλ_レ′
レ::::::::::::::::::|/:
0059名無しさん@お腹いっぱい。
02/02/28 19:12ID:???_ _
〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ TーT リ < うぐぅ。
((ニE/⌒ヾ∞"ヽ
(こ) ∞ |こ)
く__∞,ノ
し' し'
0060名無しさん@お腹いっぱい。
02/03/01 20:06ID:WMKcIrtF,' /二二 ヽ/⌒l ___________
i イノノノ))))〉=ヲ <以後これ採用
! (l| i] i] || / |
(\ ノノノlゝ"フノ!! /
(∃/ヽ ^||iii》, /
( ゝ 》⌒)中 |
[ ̄「 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
|| ̄||fZZZ7⌒)⌒ヾゝ,. ̄`||
|| ||ニ:Iニ/_7ニヒコ ||
|| ||| ||/:::::/ ||\:::ヽ ||
|| ||| |に~⌒).|| (⌒”) ||
0061かまやつ
02/03/01 21:37ID:???〃┏━━ 、
| )
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < >>60
((ニE/⌒ヾ∞"ヽ \却下。うぐぅ。
(こ) ∞ |こ)
く__∞,ノ
し' し'
0062名無しさん@お腹いっぱい。
02/03/01 23:12ID:???それは「変数展開は最初に実行したときのみ」って意味で、
コンパイル時に評価されるわけじゃないでしょ。
コンパイル時に実行/評価されるのはBEGINブロックね。
for (0 .. 9){
BEGIN{ print "begin\n" }
print "loop: $_\n";
}
0063nobodyさん
02/03/02 05:38ID:???0064nobodyさん
02/03/02 11:28ID:???_ _
〃┏━━ 、
| )
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < 却下されちゃったから引き続きボクだよぉ。
((ニE/⌒ヾ∞"ヽ はっきり言ってFORTRANもCOBOLも使ったこと無いよ〜。
(こ) ∞ |こ) 上の方で書いたけど、
く__∞,ノ
し' し' ・サーバで動く形式(ファイルを叩くだけで実行出来ること。 RUNの必要なBASICなどは不可。)
・標準入出力が扱える。
・環境変数が扱える
この3点が可能ならCGIとして使えるよ。
でも、標準入出力や環境変数って言う概念のないOSではこの限りじゃないよ。
FORTRANなら何となく出来そうだよね。
0065$_
02/03/02 11:42ID:rGRXAcBK0066nobodyさん
02/03/02 11:49ID:zcjkO+osいまいちよくわからない・・・
0067nobodyさん
02/03/02 11:49ID:???#!/usr/local/bin/manko
/*このスクリプトは画期的な新言語「MANKO」を使用しています*/
%doutei = @;
@ key ->> .*
whitebase(%doutei){printrash "%doutei";}
/*最後の処理*/
lastescape;
sub manko{
$kekeke = 1;
hyperif($kekeke){print "ギコハハハ";}
}
__DEAD__
0068nobodyさん
02/03/02 12:32ID:???_ _
〃┏━━ 、
| )
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < 基本的にはネームスペースの分離だと思うよ。
((ニE/⌒ヾ∞"ヽ ネームスペースってわかるかな?名前空間とも書いてあるね。C++とかは。
(こ) ∞ |こ) 例えばtest.plをrequireするnamespace.plがあるとするよ。
く__∞,ノ test.plにはayuayu()っていうサブルーチンがあるとすると、
し' し' namespace.plではayuayu()と言うサブルーチンは定義出来ないんだ。
プログラムはプログラマがどっちのayuayu()を呼び出したいかわからないからね。
と、言うことは、人が作ったライブラリを使うときには細心の注意が必要。面倒だよぉ。
そこで登場するのがパッケージ。これはある名前群をグループ化出来るんだ。
例えば、ayuayu()がtsukimiyaと言うパッケージ内で宣言されたとすると、それはtsukimiya::ayuayu()
となって、何もないayuayu()とは区別されるんだ(何もないはMain::に属していることになるよ。たしか。)。
こうすれば、他のライブラリのことは全く気にせず名前を付けられるようになるよね。
もちろん、パッケージ名は他とだぶらないようにする必要があるけどね。
ところで、変数とサブルーチンをグループ化する機能ってどこかで見たことない?
そう、C++などのクラスだよ。
Perlのクラスはパッケージを使って実現されてるんだ。
でも、そのおかげでPerlのクラスはわかりにくい・・・って言うのがボクの私論だよ。
0069nobodyさん
02/03/02 13:50ID:???ついでにmainは省略できるので$::fooとか ::bar('arg')とかできる。
つーか知らないんなら調べてから書け。もしかして猫と同一人物か?
0070$_さん
02/03/02 17:09ID:rGRXAcBK0071( ○ ´ ー ` ○ )なっちさん
02/03/02 17:12ID:???| >>69
| うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!
| うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!
| うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!
| うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!
| うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!
| うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!
| うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!
| うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!
∧ ∧ |/\_________
(,,゚Д゚)____.
(つ/~ ※ ※ \
/※ ※ ※ ※ \
0073nobodyさん
02/03/04 01:22ID:g+Jxs+YUなるほど・・・。
勉強になりました。
ありがとー。
0075nobodyさん
02/03/06 12:30ID:???0076use Socket;
02/03/08 23:55ID:7Mh5sc6Bちと質問なんだけど、SSIでPerlスクリプトを叩くとき、
スクリプト自体の絶対アドレスってわからんのかな?
環境変数にはHTMLのがはいってるし
0077nobodyさん
02/03/09 03:07ID:???0079use Socket;
02/03/09 17:04ID:???やはりTelnetでPWDして調べるしかないのかの
0080nobodyさん
02/03/09 17:58ID:???0081nobodyさん
02/03/09 23:56ID:???もしコマンドが許されてなくて >>80 が駄目なら Cwd.pm なんかが
ディレクトリを一個一個上がっていって調べてくれるらしいですが・・・
詳細は知らぬ。それと SSI は知らぬ。スマソ
0082nobodyさん
02/03/10 01:15ID:???my $path = ($ENV{SCRIPT_NAME} =~ /(.+\/)[^\/]+/)[0] . $ENV{_};
$path =~ s!/\./!/!g;
print $path;
0083use Socket;
02/03/10 01:36ID:???サンクスコ。うまくいったよ。というか標準ライブラリ覚えてなさ過ぎだな。
>>82,80
環境変数もコマンドも変な値返してくるサーバーだったのね。
どうでもいいけどあゆあゆどこいったのかな?
変な厨房が追い出したとか書いてあったけど
0084nobodyさん
02/03/13 23:08ID:???オールラウンドプログラミングvol.3
C/C++300の技
技術評論社 ISBM4-7741-1312-3
1980+税
青緑っぽい本。
わかりやすい本だとは言わないけど、CでCGIをやる場合の
サンプルコードとかが載ってるから、参考にする程度ならいいかも。
0085nobodyさん
02/03/14 15:15ID:???〃┏━━ 、
| )
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < http://www.gedoh.org/aki/2ch/current/bbs/
((ニE/⌒ヾ∞"ヽ \みんなが一番よく知っているサイトのC言語製CGIだよ
(こ) ∞ |こ)
く__∞,ノ
し' し'
0086nobodyさん
02/03/15 03:50ID:???初期とずいぶん変わったねー
0088Linda³ ◆4xALiNDA
02/03/17 01:28ID:Z8En8QVF0089nobodyさん
02/03/17 01:34ID:???〃┏━━ 、
| )
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ゚∀゚ リ < うーーーーーーーーーーぐぅぅぅぅぅ
((ニE/⌒ヾ∞"ヽ \
(こ) ∞ |こ)
く__∞,ノ
し' し'
0090nobodyさん
02/03/17 01:40ID:???〃┏━━ 、
| )
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ゚∀゚ リ < うぐぅ、Perlってどこでダウンロードできるの?
し' し'
0091nobodyさん
02/03/17 01:48ID:???http://www.activestate.com/
0092nobodyさん
02/03/17 02:00ID:???_ _
〃┏━━ 、
| )
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ;゚∀゚ リ < うぐぅ、ネタだけどありがとう
し' し'
0093nobodyさん
02/03/18 09:41ID:???0094nobodyさん
02/03/22 22:34ID:???0095nobodyさん
02/03/22 23:43ID:???〃┏━━ 、
| )
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ゚∀゚ リ < うーーーーーーーーーーぐぅぅぅぅぅ
((ニE/⌒ヾ∞"ヽ \
(こ) ∞ |こ)
く__∞,ノ
し' し'
0096nobodyさん
02/03/23 00:03ID:???0097nobodyさん
02/03/23 00:04ID:???〃┏━━ 、
| )
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ゚∀゚ リ < ウグゥ━━━━━━(゚∀゚)━━━━━━ !!!!!
((ニE/⌒ヾ∞"ヽ \
(こ) ∞ |こ)
く__∞,ノ
し' し'
0098nobodyさん
02/03/25 09:57ID:???_ _
〃┏━━ 、
| )
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ;゚∀゚ リ < うぐぅ、ボクは別人だよぅ
し' し'
0099nobodyさん
02/03/26 03:16ID:???何冊Perlの本を持っていますか?
Perl使えるようになるポイントは何ですか?
0100アゴ
02/03/26 07:38ID:???〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < ケント・パイプカットとつくろう!PerlでCGI。これ一冊で十分。
((ニE/⌒ヾ∞"ヽ \____________
(こ) ∞ |こ)
く__∞,ノ
し' し'
0101nobodyさん
02/03/26 07:44ID:???0102nobodyさん
02/03/26 08:01ID:???0103nobodyさん
02/03/26 08:11ID:???_ _
〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < あくまでこれは方言だと心得るべし。
((ニE/⌒ヾ∞"ヽ 気がついたら「ハッシュと正規表現無いと死ぬ」みたいなプログラマはダメだよ〜
(こ) ∞ |こ) \____________
く__∞,ノ
し' し'
0104nobodyさん
02/03/26 15:40ID:???0105Dream ★
02/03/26 16:15ID:???0106nobodyさん
02/03/26 16:33ID:???0107nobodyさん
02/03/26 17:02ID:???0108Dream ☆
02/03/26 17:59ID:???0109nobodyさん
02/03/26 18:23ID:???0110nobodyさん
02/03/26 18:48ID:???0111nobodyさん
02/03/26 21:25ID:???0112nobodyさん
02/03/26 22:25ID:???0113nobodyさん
02/03/26 23:10ID:???_ _
〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < OSとPerl処理系とエディタ(うぐぅ、あたりまえだよ〜)。
((ニE/⌒ヾ∞"ヽ 後、参考書は一冊買っておいた方がいいよ〜。
(こ) ∞ |こ) すぐわかるPerlがおすすめ。
く__∞,ノ でも、オブジェクト指向とかパッケージには触れてないから注意。
し' し' CGIは書けてもここの話には付いていけないよ〜うぐぅ。
\____________
0114nobodyさん
02/03/26 23:31ID:???むっしゅむらむら
0115nobodyさん
02/03/26 23:34ID:???Perl神の降臨を待つのみです。 さあ、祈るのです。
0116nobodyさん
02/03/27 00:23ID:???ヘリコプターさん、
http://www2.gihyo.co.jp/books/bookinfo.asp?ID=621
これですね。その本。
KENTの本はどうですか?
CGIは書くですか? PerlでCGIとして動作するプログラムを
書くのではないのですか?
0118nobodyさん
02/03/27 00:42ID:fVOwp8nR&openfile($file); # openfile は $file を開いて @in に代入する関数
foreach(@in){
s/a//g;
}
}
これでね、$file を10KB と 100KB のものにした場合、なぜか10KB のものの
ほうが処理時間がかかっちゃうんだけどこの理由わかりる?
0119nobodyさん
02/03/27 08:39ID:???〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < 今回は自分の発想を大切にしようと思い、掲示板とかの作り方に関する本は読んでないよ。ボク。
((ニE/⌒ヾ∞"ヽ 唯一読んだのが「すぐわかる」。
(こ) ∞ |こ) 他の言語本と比べてもかなりいい本なので大推薦したの。
く__∞,ノ
し' し' 正解。PerlでCGIというインターフェースに則ったプログラムを書くんだよ。
後、あゆ、ヘリコプターじゃないもん。
\____________
0120nobodyさん
02/03/27 08:40ID:???〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ <後、ムッシュかまやつでもウド君でもないもん!
((ニE/⌒ヾ∞"ヽ
(こ) ∞ |こ)
く__∞,ノ
し' し'
\____________
0121nobodyさん
02/03/27 14:55ID:???||
_||
〃┏━━ 、
| ┃ メ |
| ┃ | |
| ┃ テ |
| ┃ ル |
| ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´_ゝ` リ < ウグググググゥゥゥ....
((ニE/⌒ヾ∞"ヽ \____________
(こ) † |こ)
《《く__∞,ノ
|O| |O|
|O| |O|
|O| |O|
|O| |O|
|O| |O|
し' し'
0123nobodyさん
02/03/27 18:25ID:???0124nobodyさん
02/03/28 05:42ID:QmuV5sFD10kbのファイルは1万行で100kbのファイルは1行とか?
0125nobodyさん
02/03/28 07:35ID:UW9Ws4eZ何処の板から来たかを明記してくれると、みんなのやる気が上がります!
【クリック】 押してみっかなPart2【クリック】http://live.2ch.net/test/read.cgi/festival/1015607977/l50
0128nobodyさん
02/03/30 12:55ID:???〃┏━━ 、
| ノノソハ)))_
/リリ ´ー`)リ/\ うぐぅ
/| ̄ ̄ ̄ ̄ ̄|\/
|愛媛みかん|/
0130nobodyさん
02/03/31 03:08ID:???\____ ______/
∨
_______ _ ボコッ。
____ 〃┏━━ 、 _γ⌒⌒ヽ、
____. | ノノソハ)))ヾ \ノハ)ヽ)) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
___(\リリ;´Д`)リ#]つ)○);´Д`) < 痛いですぅ〜。
___(ニE( #]つo"/ ⊂[||L[X⊂[||) \________
___∠__∞__/ く7ココココヘゝ
___ し' (_f) (゚_(゚_)
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0131nobodyさん
02/03/31 18:17ID:???http://wow.bbspink.com/leaf/
0132nobodyさん
02/03/31 20:56ID:???//´ ̄ ヽ / ̄ ̄ ̄ ̄ ̄
i ノリノ)))〉 |
, '^ ーノl(l!゚ ヮ゚ノリ‐' ヽ < 嫌っ
ノ , リノjjノ'(.II 中.II)jルjソi |
('"´ "^く 中| ノ \_____
` じ'フ
0133nobodyさん
02/04/05 21:51ID:x+hR6+xK0134nobodyさん
02/04/05 22:50ID:???〃┏━━ 、
| ノノソハ)))_ Perlじゃむりだよぉ
/リリ ´ー`)リ/\ うぐぅ
/| ̄ ̄ ̄ ̄ ̄|\/
|愛媛みかん|/
0135nobodyさん
02/04/09 07:17ID:???0136nobodyさん
02/04/18 21:20ID:vObLTJgR0137nobodyさん
02/04/18 21:43ID:9hkDClnY0138nobodyさん
02/04/18 21:46ID:???【Perl,CGI】参考書籍 第2版
ttp://pc.2ch.net/test/read.cgi/php/988809842/
0140nobodyさん
02/04/18 21:54ID:???0141nobodyさん
02/04/20 02:08ID:ajIKEcTRこのスレの発展を祈ってバンザーイ♪
http://homepage2.nifty.com/satp/imgboard/img-box/img20020418205910.gif
0142nobodyさん
02/04/22 19:00ID:???0143nobodyさん
02/05/01 17:36ID:9tGEKAi60144nobodyさん
02/05/16 01:44ID:???0145nobodyさん
02/05/24 00:27ID:???<body>すべての始まりは秋子さん<br>
<img src=Akiko.jpg><br>そして伝説が始まる…
</body></html>
0146nobodyさん
02/05/25 03:32ID:???チェックの結果は以下のとおりです。
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
0147nobodyさん
02/06/09 00:17ID:???0148nobodyさん
02/06/11 16:19ID:???〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < 帰ってきた
((ニE/⌒ヾ∞"ヽ \____________
(こ) ∞ |こ)
く__∞,ノ
し' し'
0149nobodyさん
02/06/24 22:05ID:esiRtk+f0150Perler
02/06/24 22:22ID:???0151nobodyさん
02/06/25 15:57ID:GD8HyrKF0152FOR LOVERS
02/06/25 16:07ID:y3UvfTKA一般の会社の流通コストの部分を参加者に還元をすることにより成り立つ
ネットワークビジネスは、何人かの識者が本などで発言しているのを読ん
でみると、人間的かつ将来有効なシステムだと感じます。
実際、有名な大会社でも参入しています。
コンサルタント、マーケティングのプロの中のプロである船井幸雄氏も、
ネットワークビジネスとそれに携わる個人にすばらしい可能性を見出して
います。 興味のある人には、ぜひ参加して一緒にやってみましょう。
以下のホームページでの説明も御覧ください。
http://ailove22.fc2web.com/lpd/index.html
who@luck.ocn.ne.jp
0153nobodyさん
02/06/25 17:55ID:g4wy6DfA0154hoge
02/06/25 19:13ID:j0DYF6cause LWP::Simple;
or
use LWP::UserAgent;
0155nobodyさん
02/06/28 21:26ID:XZlkpNpuありがとうございます。まだ意味がわかりませんが
その言葉で検索かけてみます。
0156nobodyさん?
02/06/28 21:32ID:???0157nobodyさん
02/06/30 03:30ID:???0158nobodyさん
02/07/02 14:06ID:bleSkaPhがんばってね。
0159nobodyさん
02/07/14 17:40ID:???0160nobodyさん
02/07/23 10:43ID:ghlElUX/0161nobodyさん
02/07/25 02:10ID:/52BoRCiプログラムを作りたいのですが、どのようなライブラリ、関数を使えばよいのでしょうか?
キーワードだけでも教えてください、お願いします。
0162nobodyさん
02/07/25 03:33ID:???それと質問が意味不明だ。
0163nobodyさん
02/07/31 22:52ID:???0164nobodyさん
02/08/10 08:00ID:XeEMyPNM0165nobodyさん
02/08/15 17:17ID:???0166nobodyさん
02/08/22 19:40ID:???0167nobodyさん
02/08/26 08:54ID:Us+tWRjS0169nobodyさん
02/08/30 08:45ID:???メールなら sendmail で検索して調べる
パスワードをランダムで生成する
@letters = ("0" .. "9", "a" .. "z", "A" .. "Z");
srand;
$password = "";
until(length $password == 8){
$password .= $letters[rand ($#letters + 1)];
}
0171nobodyさん
02/09/21 20:50ID:???0172 ◆eCyy....
02/09/29 16:06ID:SRy9XARQ0173 ◆aqiw....
02/09/29 16:09ID:SRy9XARQ0174 ◆d7pJ....
02/09/29 16:11ID:SRy9XARQ0175 ◆1D1g....
02/09/29 16:21ID:SRy9XARQ0176 ◆a221....
02/09/29 16:29ID:SRy9XARQ0177 ◆zWhs....
02/09/29 16:35ID:SRy9XARQ0178 ◆uE7i....
02/09/29 16:36ID:SRy9XARQ0179 ◆3dGH....
02/09/29 17:00ID:SRy9XARQ0180 ◆HImu....
02/09/29 17:03ID:SRy9XARQ0181 ◆8yWF....
02/09/29 17:08ID:SRy9XARQ0182 ◆3nAmKeeA
02/09/29 17:47ID:Tm1puShE0183nobodyさん
02/09/29 20:22ID:???0184nobodyさん
02/10/01 23:42ID:???0185nobodyさん
02/10/07 00:31ID:???,' /二二 ヽ/⌒l ___________
i イノノノ))))〉=ヲ < >118の答えがわかりません。
! (l| i] i] || / |
(\ ノノノlゝ"フノ!! /
(∃/ヽ ^||iii》, /
( ゝ 》⌒)中 |
[ ̄「 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
|| ̄||fZZZ7⌒)⌒ヾゝ,. ̄`||
|| ||ニ:Iニ/_7ニヒコ ||
|| ||| ||/:::::/ ||\:::ヽ ||
|| ||| |に~⌒).|| (⌒”) ||
0186月宮あゆ ◆XalkKQX1is
02/10/10 07:23ID:???0187>>186
02/10/11 18:04ID:yEGdgJzi0188月宮あゆ ◆XalkKQX1is
02/10/12 14:00ID:???|. ノノソハ)))
(\リリ ´ー`)リ
(ニE(#つo⊂#)
乗っ取ることにしちゃったよ。
本当にゆっくりのペースでボクといっしょに勉強していこうね。
実はボクもまだまだ初心者なんだけどね。。
「こういうのはどうやるの?」っていうのは他のスレで聞いてね。
ボクがここで言ったことに対しての質問はここで聞いてくれていいよ。
WebProg板、だから、PerlでCGIを作るってことを前提に進めていこうね
質問があったら、このスレに書き込んでくれたら、
ボクに分かる範囲なら答えられるかもね
あ、最低限HTMLの知識は必要だからそのへんよろしくね。
あと、フリーのCGIでもいいから設置経験があったらいいね。
少しでも中をいじってみたことがあるっていうならなおいいね。
あと、わかりやすくするためなら、かなり強引な解釈で説明してる
ところもあるけど、とりあえずはあまり気にしないでね。
自分でCGIを作る、っていうのは、とても危険なことなんだ。
例えば、お金も持ってないのにたい焼きを買うくらい。
下手をすると、サーバーをダウンさせたりすることもできるから、
自分で作ったものはちゃんとテストして設置しないとダメだよ。
ttp://www.kent-web.com/www/
ここのページで、CGIをローカル(自分のパソコン)で動かす方法を
紹介してるから、参考にしてやってみてね。
じゃあ、今日の話はこのへんで終わるね。
0189nobodyさん
02/10/12 20:10ID:???0191月宮あゆ ◆XalkKQX1is
02/10/13 10:32ID:???|. ノノソハ)))
(\リリ ´ー`)リ <ヘッダとボディ
(ニ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 っていうのは、「表示する」ってことだと、とりあえずは
思っててくれて大丈夫だよ。
またあとの方で、詳しく説明するからね。
0192nobodyさん
02/10/13 21:23ID:???0193nobodyさん
02/10/13 21:56ID:???Content-Type: text/html; charset=EUC-JP
のように charset も出してあげませう。
0194月宮あゆ ◆XalkKQX1is
02/10/14 09:43ID:???|. ノノソハ)))
(\リリ ´ー`)リ <何か表示してみよう(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
細かい解説は次にしていくね。
0195月宮あゆ ◆XalkKQX1is
02/10/14 09:44ID:???ちょっとよく意味がわからないけど…
ちゃんと動くならそれでいいとおもうよ
>>193
文字コードの話はもうちょっと後で
お話ししようと思ってたんだけど…
0196nobodyさん
02/10/14 16:08ID:???0197月宮あゆ ◆XalkKQX1is
02/10/15 07:40ID:???|. ノノソハ)))
(\リリ ´ー`)リ <何か表示してみよう(2:解説)
(ニE(#つo⊂#)
□ 文
1行を「文」って呼ぶよ。最後には、必ず ; をつけてね。
これは、英語の文の最後にピリオド . がついているような感じ。
文の最後にはつけるようにしないと動かないよ。
ボクもたまに書くの忘れてエラー起こしちゃうんだ。
□ #…
# よりあとは、コメントになって、あってもなくても同じだよ。
HTMLの、 <!-- --> みたいな感じだね。
□ \n
\n は改行を表すよ。PerlでCGIを作るときには、
出力する【HTMLソースが改行されるだけ】だから気をつけてね。
表示上、改行したいときは、 <br> を使わないといけないよ。
□ print "●"
● の部分に、表示したい文字を入れるよ。
ファイルハンドルっていうものに関係があるんだけど、もっと後でね。
□ exit
【スクリプト】を終了させるときに使うんだよ。
これがなくても最後までいったら自動で終了するけど、
構造が複雑になってきたら見にくいから書く習慣があった方がいいね。
これで君もPerlプログラマーになれたんだよ。
でもこんな文字を出すだけなんてこと、HTMLでやればいいよね。
次はあんまり面白くないけど、Perlだからできることを勉強するよ。
0199月宮あゆ ◆XalkKQX1is
02/10/16 08:05ID:???|. ノノソハ)))
(\リリ ´ー`)リ <変数、配列、連想配列(1:説明)
(ニE(#つo⊂#)
じゃあ今回は、変数、配列、連想配列のみっつを覚えようね。
今回は簡単だから説明だけ聞いてね。
次回は使い方を説明するよ。
変数…例えれば、メモ帳1枚に名前をつけたもの。
自由に書いたり、消したり、書き換えたりできるよ。
「スカラー」「スカラー変数」とかいうこともあるよ
「abcの紙」みたいに指定できるよ。
「abcの紙」って指定したいときは、 $abc って書けばいいよ。
配列…例えれば、名前をつけたメモ帳1冊。
0ページから始まって、何ページでも増やせるよ。
「リスト」とかいうこともあるよ。
「abcメモ帳の2ページめ」みたいな感じで指定するよ。
こんなふうに指定したいなら、 $abc[2] って書くといいよ。
連想配列…例えれば、名前がついたメモ帳1冊の紙1枚ずつに、
それぞれ名前違うがついたもの。
「ハッシュ」っていうこともあるよ。
「abcメモ帳のxyzのページ」みたいに指定するよ。
こんな感じなら、 $abc{xyz} って書くことができるよ。
次は簡単な例を見てみようね。
0200月宮あゆ ◆XalkKQX1is
02/10/16 08:06ID:???0201
02/10/17 03:03ID:nUzJ4slF0202nobodyさん
02/10/17 03:12ID:???0203nobodyさん
02/10/17 05:05ID:???0204月宮あゆ ◆XalkKQX1is
02/10/17 17:51ID:???|. ノノソハ)))
(\リリ ´ー`)リ <変数、配列、連想配列(2:実行例)
(ニE(#つo⊂#)
□ 変数への書き込み方
$abc = "うぐぅ";
こんな感じにすると、【変数】 $abc には、 「うぐぅ」という
【文字列】が書き込まれたことになるよ。
同じように、
$abc[0] = "月宮あゆ"; # 配列
$abc{def} = "水瀬名雪"; # ハッシュ
みたいなこともできるよ。
□ 変数からの読み込み方
たとえば、 $abc の内容を表示したいっていうときは、
print "$abc";
ってかくとできるよ。
他にも方法はあるけど、とりあえずこれだけ覚えてるといいかな。
ここまでの説明なら、「こんなものが何の役に立つかわからない」と
思う人が多いと思うけど、【変数】がなかったら、何もできないよ。
じゃあ次からは実際に使用例を見ていこうね。
0206nobodyさん
02/10/17 20:06ID:???0207nobodyさん
02/10/17 23:04ID:???0209月宮あゆ ◆XalkKQX1is
02/10/18 21:02ID:???|. ノノソハ)))
(\リリ ´ー`)リ <時計を表示してみよう(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
詳しい解説は次にまとめてするね。
0210月宮あゆ ◆XalkKQX1is
02/10/18 21:03ID:???うん、ボクと一緒に勉強しようね
>>207
そういう会社に入ってみればいいんじゃないのかな
>>208
マターリやっていこうね、よろしく
0211nobodyさん
02/10/18 22:44ID:???0212rubyist@カラアゲうまうま
02/10/19 09:15ID:???0213月宮あゆ ◆XalkKQX1is
02/10/19 12:32ID:???|. ノノソハ)))
(\リリ ´ー`)リ <時計を表示してみよう(2:解説)
(ニE(#つo⊂#) 算術演算子(1:加法演算子)
Line 5:カッコの中は、秒,分,時,日,月(※1),年(※2)でできてるよ。
localtime で、時間を変数に書き込むんだけど、
これは丸覚えでいいよ。また今度詳しく説明するね。
この例では、6個の変数にそれぞれ書き込んでるよ。
Line11:print の中には【変数】を書くこともできるよ。
その【変数に書き込まれてる文字や数値】を表示するよ。
※注意
月は、実際の月より、1少なくなってるよ。
実際、表示に使うなら、1足して使ってね。
同じように、年は、西暦より1900少なくなってるよ。
【変数】を計算(この例なら月に1を、年に1900を足す)するには、
次のように書くだけで簡単にできるよ。
$mon ++;
$year += 1900;
● ++
っていうのは、変数●に1を足すっていうことだね。
$mon += 1;
と書いてもできるよ。
● += ◆
で、変数●に、数値◆を足すっていうことだよ。
ぜひ年と月も表示できるように改造してみてね、答えは次回書くよ。
0214nobodyさん
02/10/19 13:03ID:OUy8ZxhUforeach(split(/<>/,$line)){}
は必要な部分を順に取り出しているのか、
それとも一度無名配列に入れるようなことをしているのか教えてください。
0215nobodyさん
02/10/19 13:51ID:???0216nobodyさん
02/10/19 14:03ID:???substrは毎回先頭から数えているような感じがするのですが、
変数使用を少なくする場合これしかないのでしょうか。
0217にひゃくじゅうご
02/10/19 14:06ID:???0218nobodyさん
02/10/19 14:10ID:???0219nobodyさん
02/10/19 14:21ID:???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;
こうかね。
0220nobodyさん
02/10/19 15:31ID:???0221nobodyさん
02/10/19 18:12ID:???↓
0222nobodyさん
02/10/19 23:56ID:8H09/WLZ222ゲトー
0223月宮あゆ ◆XalkKQX1is
02/10/20 12:38ID:???|. ノノソハ)))
(\リリ ´ー`)リ <時計を表示してみよう(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;
----------------------------------------------------------------
今回はもう行数がなくなっちゃったから終わりだけど、
次は曜日を表示してみようね。
0225月宮あゆ ◆XalkKQX1is
02/10/20 12:40ID:???0226月宮あゆ ◆XalkKQX1is
02/10/22 06:51ID:???|. ノノソハ)))
(\リリ ´ー`)リ <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 = "土";}
== っていうのは、左辺と右辺が等しい、っていう意味だよ。
このへんを使って、曜日を出してみてね。答えは次回載せるよ。
0227こうだろ
02/10/22 19:25ID:???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;
0228nobodyさん
02/10/22 23:16ID:???の方が綺麗だな。
0229むしろこう
02/10/23 00:29ID:???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;
0230むしろこう(さらに改良)
02/10/23 00:45ID:???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;
0231nobodyさん
02/10/23 01:28ID:???0232こうだろ(むしろこうの修正)
02/10/23 15:49ID:???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;
0233むしろこう
02/10/23 23:48ID:???perlのパスは俺の場合/usr/bin/perlなんだよ・・・。
エスケープ忘れてたし・・・。
でも""の中で()は一応エスケープされてると思うんだけど。
ちゃんと実行して検証しているし。
やっぱエスケープは礼儀ということか・・・。
0234nobodyさん
02/10/24 01:43ID:???0235nobodyさん
02/10/24 20:31ID:???〃┏━━ 、
| ノノソハ))) / ̄ ̄ ̄ ̄
Λ_リリ ;´∀`)リ < うぐぅあげ♪
( ⊂#~ ∞~~#⊃ \____
( つ/_∞__|~
|(__)_)
(__)_)
0236nobodyさん
02/10/25 00:18ID:???0237月宮あゆ ◆XalkKQX1is
02/10/25 14:26ID:???|. ノノソハ)))
(\リリ ´ー`)リ <曜日を表示
(ニE(#つo⊂#)
>>227 が答えだね。。
配列とか使ってやるのは、もっと先に応用例としてあげたいから、
勝手に応用を使わないでほしいな…
今日の夜くらいに続きをあげようと思うけど、次考えてないんだよね…
ちょっと考えとくね
0238月宮あゆ ◆XalkKQX1is
02/10/26 02:46ID:???|. ノノソハ)))
(\リリ ´ー`)リ <配列の扱い方
(ニ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] 曜日";
ってこんな感じで曜日が出るね。
行数がなくなったから簡潔でごめんね。
次回は、ひととおり計算ができる、算術演算子をやるよ。
0239月宮あゆ ◆XalkKQX1is
02/10/26 02:48ID:???配列の中のひとつだけ、は、 @ じゃなくて $ をつけて、
[0] みたいな【添え字】をつけるよ
ってことだね
0240月宮あゆ ◆XalkKQX1is
02/10/27 00:46ID:???|. ノノソハ)))
(\リリ ´ー`)リ <算術演算子(2)
(ニE(#つo⊂#)
これぐらいはひととおり、全部覚えてね。
数学でおなじみの、計算ができる演算子だよ。
● = ◆ + ★
数値、◆と★を加算(足し算)した値を●に代入するよ。
● = ◆ - ★
数値、◆から★を減算(引き算)してその値を●に代入するよ。
● = ◆ * ★
数値、◆に★を乗算(掛け算)してその値を●に代入するよ。
● = ◆ / ★
数値、◆から★を除算(割り算)してその値を●に代入するよ。
● = ◆ % ★
数値、◆を★で割った、余りを●に代入するよ。
◆と★は小数なら、小数点以下は切り捨てられて計算されるよ。
● = ◆ ** ★
数値、◆の★乗の値を●に代入するよ。
優先順位についてちょっと説明するね。
実際の数学と同じように、加算、減算は、後回しにして計算されるよ。
先に計算したいなら、 ( ) でくくってみてね。
じゃあ次回は、 for でのループ(繰り返し処理)について説明するね。
0241nobodyさん
02/10/27 10:54ID:???0242月宮あゆ ◆XalkKQX1is
02/10/27 13:04ID:???|. ノノソハ)))
(\リリ ´ー`)リ <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 は等しい )
● != ◆ … ●と◆が数値として等しくない
● < ◆ … ●が◆より小さい
● > ◆ … ●が◆より大きい
● <= ◆ … ●が◆以下
● >= ◆ … ●が◆以上
0244月宮あゆ ◆XalkKQX1is
02/10/29 22:19ID:???|. ノノソハ)))
(\リリ ´ー`)リ < while / until / next / last
(ニE(#つo⊂#)
while / until っていうのは、どっちもループだよ。
じゃあまず、文法の説明をするね。
while ( ● ) { ◆ }
until ( ● ) { ◆ }
● … 式 ( 後述参照 )
◆ … 繰り返す処理
どちらの場合でも、● は、比較演算子を使った条件を指定するよ。
数値比較演算子じゃなくって、文字列比較演算子っていうのも
あるんだけど、それは次くらいに詳しくみてみるよ。
while は、英語で、【〜の間】だね。
Perl でも、条件●が成立する間、◆を繰り返すことになるよ。
until は、英語で、【〜まで】だね。
●が成立するまで(=●が成立しない間)、◆を繰り返すよ。
next / last は、ループを途中でやめたりするのに使うよ。
next は、現在のループを終了して、次のループに入る、っていうこと、
last は、全てのループからただちに抜け出す、っていうことだよ。
じゃあ次回は実例を見てみようね。
0245nobodyさん
02/10/30 00:32ID:???0246月宮あゆ ◆XalkKQX1is
02/10/31 22:33ID:???|. ノノソハ)))
(\リリ ´ー`)リ < ループと文字列比較演算子
(ニE(#つo⊂#)
こんなことをすることは少ないと思うけど、例を挙げるね。
$hoge = "aaa";
until($hoge eq "aaaaaaaaaa"){
$hoge = "a$hoge";
}
この例では、変数 $hoge の前に、次々に "a" を追加していってるね。
"a" が10個並んだところでループ終了だね。
どんな時に、条件に一致するか (真偽) については、次回説明するね。
これも条件で使われるよ。数値として比較する数値比較演算子とは違って、
文字列として比較する、文字列比較演算子っていう名前があるよ。
● eq ◆ … ●と◆が完全に一致
● ne ◆ … ●と◆が一致しない
● =~ /◆/ … ●に◆が含まれる …(※)
他にもあるんだけど、これだけ覚えてれば十分だよ。
※本当は、【正規表現】っていう新しいことなんだけど、
よく使いそうだからここで一緒に覚えようね。
正規表現は、近いうちに勉強するよ。
0247月宮あゆ ◆XalkKQX1is
02/11/01 17:40ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 真と偽
(ニ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 を勉強しようね。
0248月宮あゆ ◆XalkKQX1is
02/11/03 23:56ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 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 "その他";}
このへんはとっても重要だから、しっかり覚えておいてね。
0252月宮あゆ ◆XalkKQX1is
02/11/05 22:20ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 正規表現 (1)
(ニE(#つo⊂#)
正規表現っていうのを勉強するよ。
ちょっと難しい、ってよく言われるけど、そう思わずに
しっかり読むと必ず分かるから、とりあえず読んでみてね。
正規表現は、柔軟なパターンマッチをすることができるよ。
例えば、特定の文字が含まれるかどうか調べたり、
文字の置き換えをしたり、またあとで勉強するけど、
split っていう関数のパターンに使ったりできるよ。
ここはよくわからなくてもいいよ。
わかりやすく説明すると、
● =~ /◆/★
これで、【変数●がパターン◆にマッチ】っていうことだよ。
【マッチ】っていうのは、簡単に言うと、【●が◆の状態である】
っていうことなんだ。じゃあ、【◆の状態】っていうのを説明するね。
★については、2回後くらいに説明するね。今はなにも書かいでね。
まず、例は、3回前に勉強した含まれるパターンだね。
◆には【普通の文字】と、特別な意味のある、【メタ文字】のふたつが使えるよ。
3回前に勉強したのは、普通の文字だけだね。
じゃあ、メタ文字について説明するね。
続く…
0253月宮あゆ ◆XalkKQX1is
02/11/05 22:20ID:???. … なにか1文字
* … 直前の文字やパターンの0回以上の繰り返し (いくつあってもよい)
+ … 直前の文字やパターンの1回以上の繰り返し (必ず1つ以上ある)
? … 直前の文字やパターンが1つだけあってもなくてもよい
[abc] … [ ] で囲んだ文字の中のどれか1文字
^ … 【…で始まる】という意味。パターンの最初に使う。
$ … 【…で終わる】という意味。パターンの最後に使う。
{5} … 直前の文字やパターンの5回繰り返し
{3,8} … 直前の文字やパターンの3回以上8回以下の繰り返し
例だよ。
if ( $abc =~ /^def$/ ) { print "マッチ"; }
これは、
if ( $abc eq "def" ) { print "マッチ"; }
と、同じ意味になるよ。
とりあえず、何の役に立つかわからなくてもいいから、
使い方は覚えておいてね。
0254月宮あゆ ◆XalkKQX1is
02/11/05 22:20ID:???うん、ありがとう
頑張るよ
>>250
ずっと読んでくれてるの?
なんだか嬉しいな
>>251
別に気にしなくていいよ
…みんなはこのへんちゃんと理解してくれてるのかな?
わかりにくいところがあったら言ってね。
説明しなおすからね。
0255月宮あゆ ◆XalkKQX1is
02/11/09 23:36ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 正規表現 (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 "アルファベット大文字以外の文字が含まれている"; }
次回は、 ( ) と後方参照について説明するね。
#間違いがあったら指摘してね…
0256 ◆soCKet026k
02/11/10 21:21ID:Za96cXhY0258nobodyさん
02/11/12 01:15ID:???途中で挫折した香具師多いと思われるから、マターリ進行で…
0259月宮あゆ ◆XalkKQX1is
02/11/12 18:44ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 正規表現 (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"; }
次回は、 [ ] を簡略化できる感じの、メタ文字と、
スペースがあまったら正規表現演算子をみてみようね。
今回はちょっと短いけどこれで終わりだよ。
0260月宮あゆ ◆XalkKQX1is
02/11/12 18:45ID:???うん、それならよかった
>>257
結構かかりそうだよね…
そんなに難しい話になるまで続くのかな…?
>>258
うん、そうだね
まあ実用的なスクリプト作れるぐらいになったら終了、かな
0261月宮あゆ ◆XalkKQX1is
02/11/14 21:11ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 正規表現 (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 とかもあるけど、それはそのとき説明するね。
0262月宮あゆ ◆XalkKQX1is
02/11/14 21:11ID:???「これでとりあえず、正規表現は終わりだよ、次回は配列操作をやるね。」
0263nobodyさん
02/11/15 09:48ID:???ほぼ、一日に1レクチャか、まめだね。尊敬するよ。
下手な日記書いてる奴よっかスゲーなおまい
0264nobodyさん
02/11/15 17:51ID:???∧ ∧ |/\_________
(,,゚Д゚)____.
(つ/~ ※ ※ \
/※ ※ ※ ※ \
0265美坂香里 ◆96KAORIvws
02/11/16 01:46ID:???0266月宮あゆ ◆XalkKQX1is
02/11/16 12:40ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 配列操作
(ニ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
次回は、ファイル入出力とファイルハンドルについて説明するね。
0267月宮あゆ ◆XalkKQX1is
02/11/16 13:03ID:???うん、ありがとう
途中でいきなり終わり、なんてことにならないようにがんばるよ
>>264
うん、そうだね
これからどんどん寒くなっていくからね
ボクもこの前こたつ出したよ
>>265
香里さんの家ってそんなに散らかってるの…
片づけてあとで温かいこたつに入るときもちいいよ
0268栞 ◆SHIORIrGsg
02/11/17 02:10ID:???0269月宮あゆ ◆XalkKQX1is
02/11/18 18:35ID:???|. ノノソハ)))
(\リリ ´ー`)リ < ファイル入出力 (1)
(ニE(#つo⊂#)
今回はファイルの読み書きとファイルハンドルについて説明するね。
・ファイルハンドル
ファイルハンドル、っていうのは、ファイルを開くときに、ファイルハンドル、
っていうものに結びつけて開くんだ。ファイルに書くときも同じだよ。
これにファイルを結びつけてを作るには、 open っていう関数が一番一般的だね。
ファイルハンドルは、半角大文字でつけるのが原則だよ。
ファイルハンドルを使い終わったら、 close 関数で閉じるようにしようね。
open ★, ◆
close ★
★ … ファイルハンドル (半角大文字ならなんでもいいよ)
◆ … ファイル名
ファイル◆をファイルハンドル★に結びつけて開くよ。
じゃあ、 "test.txt" の内容を $test にいれて、表示するサンプルを書いてみるね。
open IN, "test.txt";
$test = <IN>; # こうやってファイルハンドルを変数に代入する
close IN;
print "$test";
Perl の勉強熱心な人は、実際試してみるてね。
今回のプログラムは、いろいろやっていると何か気付くことがあるはずだから、
必ず試しに動かしてみてね。 test.txt の中を書きかえながら。
0271nobodyさん
02/11/18 22:08ID:???0273 ◆soCKet026k
02/11/19 17:09ID:/vFjknvyタイヤキアイス食え。
>>271
ここに書き込んだ時点であなたも(以下略
ここの会話がヲタ会話とわかる時点であなたも(以下略
0274nobodyさん
02/11/19 18:34ID:???0275月宮あゆ ◆XalkKQX1is
02/11/19 23:15ID:???|. ノノソハ)))
(\リリ ´ー`)リ < ファイル入出力 (2)
(ニE(#つo⊂#)
前回のスクリプトはみんな動かしてみてくれたかな?
いろいろやってみると、最初の1行しか表示されないことに気付いてくれたと思うんだ。
詳しくはそれはもう少しあとでやるね。
今回はファイルに書き込む方法を説明するよ。
open ★, "> test.txt";
こんなふうに、 > をつけてファイルを開くと、書き込みモードになるんだよ。
このファイルに書き込むには、
print ★ "test";
みたいな感じにするよ。
じゃあ、簡単なカウンターを書いてみるね。
行数が入らないから続くよ
0276月宮あゆ ◆XalkKQX1is
02/11/19 23:16ID:???#!/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;
----------------------------------------------------------------
ちゃんと動かしてみてね。
今回はここで終わりだよ。
0278一うぐぅファン
02/11/20 00:58ID:???数年前CMやってたの覚えてるし、多分うちの近所のスーパーに行けばまだ売ってると思う。
たい焼きの形をした最中の中にあずきとバニラアイスが入ってまつ。
あずきのバニラアイスのハーモーニーがたまりませんです。
余談
自分暇つぶしに2chのTripFinderスレを読んで自分なりのプログラムを組んでみたです。
CPU負荷かかりまくり、でも任意のTrip探す手間を考えれば楽なもんかな?とか思いながら使ってます。
今度taiyakiって入ったIDを探したいです!
0279月宮あゆ ◆XalkKQX1is
02/11/20 20:44ID:???恥ずかしい…
-[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;
----------------------------------------------------------------
>>278
そうなんだ、じゃあボクも近くのスーパーに行って探してみるよ
ありがとうね
0280一うぐぅファン ◆unyuH2NGgE
02/11/20 23:12ID:???楽しみに見てますです。
それとトリップ付けてみました、別に意味はないので・・・ただunyuなだけです。
コンビニでたいやきアイスは発見できませんでした・・・残念です。
0281秋子 ◆AKiKoYVoZk
02/11/20 23:18ID:???0282祐一 ◆yuitiQyXzU
02/11/21 10:39ID:???0283月宮あゆ ◆XalkKQX1is
02/11/21 21:00ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 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 "$_";} # ● を省略したら、省略の原則、 $_ に入るよ。
この話を応用して次回にもっていくから、絶対に使えるようにしておいてね。
0284月宮あゆ ◆XalkKQX1is
02/11/21 21:00ID:???わかりやすい…?
そう、かな…?
ありがとね
>>281
うん、頑張るよ
>>282
1日1つ頑張りたいけど、無理な日もあってごめんね
0285一うぐぅファン ◆unyuH2NGgE
02/11/21 23:40ID:???すっごく楽しみに見てるよ、これからも頑張ってね。
0286nobodyさん
02/11/23 07:35ID:???0287月宮あゆ ◆XalkKQX1is
02/11/23 09:15ID:???|. ノノソハ)))
(\リリ ´ー`)リ < ファイル入出力 (3)
(ニE(#つo⊂#)
今回は複数行のファイルを読み込む方法を説明するね。
open IN, "test.txt";
# 1行だけ読み込む
$test = <IN>;
# 全行読み込む
@test = <IN>;
close IN;
こんな感じにすると、1行ずつが配列のひとつの要素になるよ。
じゃあ、このファイルの中身を表示するには、
foreach (@test){
print "$_<br>";
}
ってやると表示されるよ。
じゃあ次回は、ファイルの読み書きもわかったし、
ユーザーが何か入力したのを受け取って結果を表示する、
ってことを勉強してみようね。
0288月宮あゆ ◆XalkKQX1is
02/11/23 09:15ID:???ただの趣味の延長だから、変なところがあるかもしれないけど…
気に入ってくれてうれしいよ、ありがとうね。
0289月宮あゆ ◆XalkKQX1is
02/11/23 10:46ID:???最初にも言ったけど、ここの教室でやっていることは、
【わかりやすくするために多少強引な説明をしている】ところがあるよ。
基本なんだけど、【わかりにくいし使われもしないから省いている】ところも
たくさんあるよ。他のサイトとか見てると、戸惑うことも多いとおもうけど、
混同させないように注意してね。
0290一うぐぅファン ◆unyuH2NGgE
02/11/23 12:29ID:???0291nobodyさん
02/11/23 15:54ID:???メルマガとか出してみたら?
0292 ◆soCKet026k
02/11/23 20:37ID:bk4yPgrO0293nobodyさん
02/11/24 17:29ID:???0294nobodyさん
02/11/25 15:02ID:???0295nobodyさん
02/11/26 07:17ID:wcv/13ds0296nobodyさん
02/11/26 12:02ID:???0297nobodyさん
02/11/26 16:16ID:???(´・ω・)っ旦 <マターリ
0298nobodyさん
02/11/26 20:26ID:???( ´∀`)< このスレきもい♪
( つ \______
(_○___)
0299>ALL
02/11/26 22:58ID:???0300月宮あゆ ◆XalkKQX1is
02/11/27 18:09ID:???|. ノノソハ)))
(\リリ ´ー`)リ < フォームデーターの受けとり
(ニ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の世界はとっても広がるよ。
次回は、簡易掲示板を書いてみるね。
#投稿が遅れてごめんね
0301月宮あゆ ◆XalkKQX1is
02/11/27 18:11ID:???うんうん、よろしくね
>>291
それもいいかもね
わかりやすく書き直して、カリキュラムもしっかり組めたら出してみるかも
>>293
うん、乗っ取らせてもらったよ
WebProg板のスレはなかなか落ちないからね…
>>297
うんうん、マターリしようね
0302月宮あゆ ◆XalkKQX1is
02/11/27 18:50ID:???内容についての質問とか要望があったらメールしてくれてもいいよ
なるべく返信はしたいけど、忙しくて手が回らなかったりしたらごめんね。
0303一うぐぅファン ◆unyuH2NGgE
02/11/27 19:19ID:???もう来ないのかと思ったけど、待ってて良かったよ。
メルマガいいね!
0304nobodyさん
02/11/28 01:41ID:???気に入らなければ放置してくれれば良いだけなのに…。
0305nobodyさん
02/11/28 21:24ID:???こんな輩がいるからいつまでたってもcgi-lib.plを使う香具師が絶えないんだな
0306一うぐぅファン ◆unyuH2NGgE
02/11/29 00:10ID:???cgi-lib.plって何?
マジで使ったこと無いけど、何するもんなの?
てか必要なの?
0307nobodyさん
02/11/29 00:21ID:???わざわざ鯖に入れている鬱、、、
0308nobodyさん
02/11/29 11:21ID:???今まで知らなかったよ。(うぐぅ
0309月宮あゆ ◆XalkKQX1is
02/11/29 18:18ID:???#!/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;
----------------------------------------------------------------
0310月宮あゆ ◆XalkKQX1is
02/11/29 18:21ID:???簡易掲示板のソースだよ。
同じフォルダに、 cgi-lib.pl をいれてね。
>>303-304
ボクは途中で放棄はあまりしたくないんだよね
来なくなることはないと思うよ
>>305 >>307
まあ最初の方はこうやって簡単にやってもいいんじゃないかな?
もうちょっと勉強してきたら、自分のスクリプトの中に書いていこうと思うよ。
>>306
フォームからデーターを送られてきたのを、CGI側で取得する機能があるよ。
他にもいくつか機能があるけど、代表的なのはこれだね。
0311一うぐぅファン ◆unyuH2NGgE
02/11/29 18:33ID:???cgi-lib.plって便利そうだね。
もうちっと詳しく知りたいのでぐぐってきます。
0312月宮あゆ ◆XalkKQX1is
02/11/29 18:37ID:???>>308
うん。
ボクの名前でドメインとっちゃった。。
>>311
わぁ、ありがとう!
まあ、 cgi-lib.pl は便利なことは便利なんだけど、
ちょっと実行したときの効率があまりよくないんだよね。
また今度、 cgi-lib.pl なしで取得する方法を勉強するね。
0313 ◆soCKet026k
02/11/29 20:14ID:I1ECfjSv今日タイヤキアイス食った、うまかった。
0314nobodyさん
02/11/29 20:40ID:Utvm+/IVこの非常用備蓄食は保存性に優れたアルファ米を使っており、自衛隊も戦闘糧食として使用していることから軍事用に転用される恐れもある。
石原都知事はこの件に関して政府と国会に徹底的な調査を要求すると述べた。
「ニュース速報+」【国際】東京都の非常食が北朝鮮に、石原知事激怒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
0315一うぐぅファン ◆unyuH2NGgE
02/11/29 21:02ID:???自分はcgi-lib使わないで取得、エンコードずっとしてきたから・・・必要性は感じないんだけど知識としてね。
またページには遊びに行くよ!
なんか雰囲気とかもよかったし、勉強できそうなこととかもありそうな予感。
次回の授業を楽しみにしてます!
0318305
02/11/30 10:28ID:???0319nobodyさん
02/11/30 17:02ID:???そんなもん、コンパイルしてメモリにロードされるかとおもうと
とうてい、使う気にはなれんな。
0320月宮あゆ ◆XalkKQX1is
02/12/01 01:44ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 掲示板 (2)
(ニE(#つo⊂#)
すっごく簡単に掲示板を書いてみたけど、どうだったかな?
やっぱり、機能が少なすぎるよね。
これからはしばらくの間、毎回少しずつ機能を足していく予定だよ。
今回の追加してみる機能は…
・名前欄を作るよ
・メール欄も作るよ
・名無しさんの名前が出るようにするよ
名前、メールは、入力欄を増やして、ログファイルに書き込むように
すれば、簡単にできちゃうよ。
名無しさんも簡単だね。
if(!$in{name}){
$in{name} = "名無しさん";
}
名前欄がなかったら「名無しさん」を代入してるね。
長くて入りきらなくなっちゃったね…
ここには重要な部分だけ書いて、全文はリンクからたどれるようにするね。
ソースはここだよ。
http://www.geocities.co.jp/SiliconValley-Sunnyvale/8274/perl/perl0006.txt
読めない、っていうときは、対象をファイルに保存、かソースを表示してみてね。
次回は、新しく置換演算子を勉強して、いろいろなことをやってみるね。
0321月宮あゆ ◆XalkKQX1is
02/12/01 01:47ID:???レスが早いのは運だよ
cgi-lib.pl は最初だから簡単に取得するために説明してるから、
慣れてきたら自分でやったほうがいいと思うよ
うん、ボクのホームページにも遊びに来てね。
ありがとう
>>316
317もあるけど、余計な処理をしすぎっていうか、
もっと簡単に短く単純に書けるよね
まあ自力でやる方法は今度説明するね。
>>318-319
cgi-lib.pl を使うのも CGI.pm もメリットがあればデメリットもあるよね
Perlを考えたアメリカの人は(名前忘れちゃったけど)
「Perlは好きなように書けばよい」っていう言葉を残してるんだから、
人それぞれやり方が違ってもいいと思うな
0322月宮あゆ ◆XalkKQX1is
02/12/01 01:51ID:???違ってたら恥ずかしいから、とりあえず発言撤回させて…
0323一うぐぅファン ◆unyuH2NGgE
02/12/01 15:07ID:???鮎タンのページの掲示板でおみくじやったら「大凶」と「最大凶」ひいちゃったよ・・・。
これも運・・・。
0324305
02/12/02 13:14ID:???だが今人に勧めるのなら既に保守更新されていないcgi-lib.plよりも
標準モジュールとして使えるCGI.pmの方が導入は容易だと思うのだが?
まあそれでもcgi-lib.pmが良いというのなら、ポリシーは人それぞれだからかまわないが。
>>319
滑稽だな。そう思うのならそもそもCGI/Perlを選択するのが間違い。
0325nobodyさん
02/12/05 18:47ID:o9GMmmoX0326月宮あゆ ◆XalkKQX1is
02/12/05 20:43ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 置換演算子
(ニ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 のなかに " を使いたいときも \" とするといいよ。
このへんのことは、これから先ずっと使うことになるから、必ず覚えるようにしようね。
0328一うぐぅファン ◆unyuH2NGgE
02/12/05 21:20ID:???個人的にtrがすごく知りたいよ、まだいまいち理解してないんだよね。(恥
でも正規表現そのものが便利で難しいみたいだし、まだまだ勉強だね。
次回楽しみにしてます。返答ありがと。
0329nobodyさん
02/12/05 23:41ID:???ということで、じつは・・・
● =~ s#◆#★#g;
なんてのも使えるんだよ。
これなら「/」が多い日も安心ですね。
・・・っていうのは次回でつか?
>>328
「1文字ずつ対応させて置換する」って表現ではどうでしょう?>tr|y
$test = '01234-02468-13579-56789';
$test =~ tr/[0-9]/[A-J]/;
print $test; # ABCDE-ACEGI-BDFHJ-FGHIJ と表示
0330nobodyさん
02/12/06 00:00ID:???[]に意味はあるのかい?
0333nobodyさん
02/12/06 18:41ID:???q, qq, qw を覚えよーょ。
クォートのエスケープは他の言語でもよく使われるから、
覚えておいて損はないけど。
0334マルチ
02/12/06 20:22ID:???こんど♪のスクリプトも改良してほしいですぅ
0335nobodyさん
02/12/06 20:50ID:???ここにも出たか、粘着リア厨が!
さっさと糞してねれ!!
削除依頼出しとけよ!
0336nobodyさん
02/12/06 21:13ID:???0337nobodyさん
02/12/06 21:20ID:???まああんな穴だらけのクリプト晒されりゃいい恥さらしだから無理もないか(藁
0338nobodyさん
02/12/06 22:40ID:dKGf9spa(・∀・)カンリョウ!!
0340月宮あゆ ◆XalkKQX1is
02/12/06 23:50ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 展開とクオート風演算子
(ニE(#つo⊂#)
リクエストがあったから勉強するね。
$text = "うぐぅ";
print "うぐぅ<br>\n";
print "$text<br>\n";
print 'うぐぅ<br>\n';
print '$text<br>\n';
例えば、後々の説明を楽にするために、これを実行させてみてね。
'…' で囲むと、変数名がそのまま出ちゃったり、
ちゃんと改行されなかったりすることがわかると思うんだ。
'…' では、変数やメタ文字は【展開】されないよ。
つまり、囲った文字がそのまま出る、っていうことなんだ。
"…" では、【展開】されるよ。
さっきの例のソースを、全部、
"…" で囲んであるものは、 qq{…} に書き替えができるよ。(展開されるよ)
" が、ダブルクオーテーションっていう記号だから q がふたつあるのかな。
'…' で囲んであったら、 q{…} に書き換えができるよ。(展開されないよ)
こういうのを、クオート風演算子、っていうよ。
ボクは個人的な話だけど、 print は全部 qq{…} で書いてるよ。
続くよ。
0341月宮あゆ ◆XalkKQX1is
02/12/06 23:51ID:???|. ノノソハ)))
(\リリ ´ー`)リ < クオート風演算子
(ニE(#つo⊂#)
qw についても説明するね。
● = qw{★};
★で、半角スペースで区切った文字列を順番に配列●に代入するよ。
これは知らなくてもそんなに影響はないと思うんだけどね…
qr は、取り扱うとしたらもう少し先になるかな…?
あといくつか、クオート風演算子はあるんだけど、代表的なものとしてこのへんで終わりにするね。
{ } って書いたけれど、一定の制約を守っていれば、 { } じゃなくてもできるよ。
一定の制約
・英数字以外の半角文字だったら何でもいいよ。
・ # を使うときは、直前にスペースがあると、コメントと間違うから注意だね
・カッコを使うときは、左右でペアにして使うよ。 { } ( ) [ ] < >
これは、正規表現の時にも使えるんだ。
たとえば、置換演算子の時では…
$test =~ s/xxx/yyy/g;
$test =~ s#xxx#xxx#g;
$test =~ s{xxx}{yyy}g;
これらは全部同じことを表しているよ。
それにしても、ボクはこの授業の内容は全部テキストファイルにしてるんだけど、
→ この行でちょうど1000行に達してしまうんだよね…。
ボク、よくこんなに書いたなあ…
0342月宮あゆ ◆XalkKQX1is
02/12/06 23:57ID:???>>329さんが上手く説明してくれてるね。
ボクにはこれ以上うまく説明はできないかな
>>334
おんぷちゃんねるのスクリプト…?
改造すべきところなんてあるかな?
どう改造してほしいか言ってくれたら、
もしかしたら1%ぐらいの確立で改造してみるかも
あと、ここでは「あゆ」って呼んでくれた方がうれしいな
0343マルチ
02/12/07 00:21ID:???ごめんなさいです。。。
用なし逝って話しますですぅ
0344nobodyさん
02/12/07 02:59ID:???ありがと、そっか〜つまり抜けてる部分とか余ったりするとよくないっぽいんだね。
一つずつってのがポイントみたい。
これでtrは解ったよ、ホントありがと。
うぐぅタン
だんだん難しくなってきたよ・・・。
まだ何とか付いていけてるから、次もよろしく〜
0345一うぐぅファン ◆unyuH2NGgE
02/12/07 03:00ID:???0346nobodyさん
02/12/07 03:11ID:???0347nobodyさん
02/12/07 06:32ID:???おまえが近づかないようにするためだよ。
0348月宮あゆ ◆XalkKQX1is
02/12/07 23:16ID:???|. ノノソハ)))
(\リリ ´ー`)リ < サブルーチン (1)
(ニE(#つo⊂#)
Perlで一番重要な、サブルーチンについての説明だよ。
自分で処理を決める関数のようなものがつくれるから、ユーザー関数とかも呼ばれるよ。
サブルーチンは、「宣言」しておくと「実行」できるようになるよ。
じゃあ、宣言の方法を説明するね。
個人的な話だけど、ボクは、 { } の中に改行がくるときは、
インデントすることにしてるよ。インデントっていうのは、
行の始めにタブやスペースをいれて、始まりを右にずらすことだよ。
アンインデント、はこの逆だね。
これを使うと、スクリプトが複雑になってくると見やすくていいよ。
sub abc{
$x ++;
}
これは、変数 $x に 1 を足す、サブルーチンだね。
呼び出すには、 &abc; って書いて呼び出すよ。
サンプル。「2」って表示されるよ。
$x = 1;
&abc;
print "$x";
sub abc{ $x ++; }
サブルーチンはとっても重要で便利だから、必ずマスターしてね。
0349月宮あゆ ◆XalkKQX1is
02/12/07 23:17ID:???うん、そうしてね。
わかってくれてうれしいよ
>>344
だんだん難しくなっていくね
わからないことがあったら気軽に聞いてね。
0350一うぐぅファン ◆unyuH2NGgE
02/12/08 14:06ID:???とりあえず今のところ大丈夫だよ。
次は何が出てくるのか楽しみです。
0351nobodyさん
02/12/08 19:24ID:Jo6i/ZZ/0352nobodyさん
02/12/08 19:53ID:???待て、一番重要なサブルーチンの説明がよりによって引数無し、グローバル変数操作かよ。
常識的なサンプルを提示できないなら、頼むから何もしないでくれ。はっきりいって迷惑。
0354nobodyさん
02/12/08 23:42ID:???0355サブルーチン編
02/12/09 00:42ID:VP9Z79edmy %param = @_;
#何か
return ...;
}
0356nobodyさん
02/12/09 00:42ID:???>これは、変数 $x に 1 を足す、サブルーチンだね。
( ´,_ゝ`) プッ $x= 'A'でも1足すのかよ
$x= 'A';
$x++;
print $x; # これはB
$x= '?';
$x++;
print $x; # これは1
よく頭に叩き込んでおけ
0357正規表現編
02/12/09 00:47ID:VP9Z79ed^ =>最初
$ =>最後
文字
. =>1文字
[..] =>文字クラス。括弧の中の、任意の1文字
[^..] =>中身以外の文字を1つ
繰り返し
* =>0以上
+ =>1以上
{n} =>n回
{n,m} =>n以上m未満
{n,}、{,m} も可能
(?:...) =>まとめるだけでいいとき
(...) =>後から$1とかで使うとき
\1 \2 \3 =>パターンマッチの中で使える。
$1 $2 $3 =>外で使う
0358nobodyさん
02/12/09 02:11ID:???確かに、これだけじゃちょっと・・・
変数のスコープとか、GC,
サブルーチン内でグローバル変数を変更する事のリスクとか。
後できちんとフォローすれば大丈夫。多分。。。
0359nobodyさん
02/12/09 09:41ID:???綾波レイのWEB制作管理教えますれ
http://pc3.2ch.net/test/read.cgi/hp/1023741627/l50
0360nobodyさん
02/12/09 12:31ID:czPx1nV4use strictなんてきらいだよー。
0363nobodyさん
02/12/10 21:21ID:???0364月宮あゆ ◆XalkKQX1is
02/12/10 22:32ID:???|. ノノソハ)))
(\リリ ´ー`)リ < サブルーチン (2) 返り値
(ニE(#つo⊂#)
サブルーチンでは、返り値 (かえりち) っていうものが作れるよ。
「返り血」とか変なこと言ったら嫌だよ。
$x = &xxx; # $x には abc が代入されるよ。
sub xxx{ return "abc"; }
return ●
…●を返り値として、呼び出し元に戻る。
ちょっとここで注意だけど、この関数は、絶対にサブルーチンの外で
使っちゃだめなんだ。戻る場所がないからね。
ふたつ以上の返り値を送りたいなら、
return ( $a, $b, $c );
みたいに配列にして送るといいよ。
受け取るときは、
( $a, $b, $c ) = &xxx;
こうやって受け取ることができるよ。
それか、配列をあらかじめ作っておいて、
return @xxx;
@xxx = &xxx;
みたいなこともできるよ。
0365月宮あゆ ◆XalkKQX1is
02/12/10 22:38ID:???もうすこし先で勉強するからもうちょっとまってね。
>>352-355
サブルーチン、はとりあえず (4) か (5) まで続くと思うよ。
今は (4) の途中まで書いてるからね。。
>>356
確かに、オートインクリメント演算子は、「1足す」じゃなくて、
「値を1増加させる」っていう機能なのはその通りなんだけど、
そんな扱ってないようなことを勝手に進めないで。
先に「省略してるところもある」ってちゃんと言ってるんだから。
そんなことはあまり知る必要ないんじゃない?
>>358
必要最小限のことは付け足すからね。
>>363
ボクはPHPはほとんどできないんだよね。。
勉強するにもPHPの入門書が数ないからねえ。。
0366nobodyさん
02/12/11 07:08ID:???重箱の隅をつつくようだけど、実はサブルーチンの外でもreturnを使えるケースがあるんだよね。
標準ライブラリの中にもその使い方をしているものもあるよ。
ところで、-wスイッチとuse strictの説明の予定はあるの?
コーディングを楽にするためにも、まずその説明をした方が良いと思うね。
>>366
同じ意味だと思うよ。
0369nobodyさん
02/12/11 23:34ID:M9dNCh9D0370nobodyさん
02/12/12 08:30ID:???0371nobodyさん
02/12/12 10:53ID:SmMSqgPFforeach
これってフォーイーチ?
フォーリーチですか?
気になって仕方ないです…
お願いします。
for eachだから、そのように。
0373nobodyさん
02/12/12 12:12ID:???0374371
02/12/12 12:18ID:SmMSqgPFそれはあんまりです(笑
0375月宮あゆ ◆XalkKQX1is
02/12/12 20:52ID:???|. ノノソハ)))
(\リリ ´ー`)リ < サブルーチン (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"; }
0376月宮あゆ ◆XalkKQX1is
02/12/12 20:55ID:???うん、同じだね
>>367
eval の中かな?
eval はまだ取り扱ってないから、出てきたときに説明しようと思って、
こんなところで「eval」って出したら混乱する人もいそうだから、
あえて説明しなかったんだよね。。
-w とか strict は、知っておいた方がいいことだろうね。。
-w は未定だけど、 strict はそのうち勉強する予定だよ。
>>371
ふぉーいーち、だと思うよ
0377くせ〜
02/12/12 21:35ID:???このあゆ、汗っかきだなあ
このあゆ、ワキガ??
0378かわいくしたよ
02/12/12 22:02ID:???〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ *´ー゚*リ < うぐぅ♪
((ニE/⌒ヾ∞"ヽ \____________
(こ) ∞ |こ)
く__∞,ノ
し' し'
0379nobodyさん
02/12/12 23:14ID:???| う う |
| ぐ う / ̄ ̄ ̄ ̄ ̄ ̄
| ウ | < うげぇ
\__/ \______
. r‐-i^i´`||iii》ヽ
(_| | i/二フ.〉
(__|_ゝ、__[]_ア
/ l| |
/fヨI 中|
く l| |
` ‐r-十!
ノ ! !
/ゝ,/ー|
/ /l |
/ f《 |fヨ |
. \_)_ノ
0380nobodyさん
02/12/12 23:34ID:???そういえばevalもそうだっけ。でもそれ以外にもあるよ。
実はrequireされるライブラリファイルの中だとreturn出来るんだよ。
例えばAnyDBM_Fileがそうしてる。
ま、普通は使わない機能だけどね。
0382nobodyさん
02/12/13 02:31ID:???subroutine, eval, do FILE ... みたいですね。
ライブラリの中って言うのは、よくモジュール等の最後に 1; ってやるけど
あれって、return が省略されていたんだ?
そういえば、sub 内でも定数とかを返すだけのサブルーチンでは
return省略してるの良く見かけるよなぁ
0383nobodyさん
02/12/13 03:08ID:???> あれって、return が省略されていたんだ?
ちょっと違う。
returnがない場合、最後に評価された式の結果が返される。
1; というのは式1;の値は1だから1が返る。
…って動作のはず。
0384nobodyさん
02/12/13 06:33ID:???0385nobodyさん
02/12/13 14:56ID:TqDERRP10386nobodyさん
02/12/13 15:12ID:???0387nobodyさん
02/12/13 15:46ID:???睾丸無知
0389nobodyさん
02/12/16 01:42ID:/+dGpF860390しぼーん
02/12/16 17:40ID:???0391ショボーン
02/12/18 02:07ID:???0392月宮あゆ ◆XalkKQX1is
02/12/19 20:55ID:???|. ノノソハ)))
(\リリ ´ー`)リ < サブルーチン (4) 引数
(ニE(#つo⊂#)
引数、っていうのは、「ひきすう」って読むらしいよ。
ボクはこのあいだまで、「いんすう」だって思ってたんだけど。。
サブルーチンから値を持って戻る、っていうことをやったね。
じゃあ次は、値を持ってサブルーチンを実行するっていうことをやるね。
&xxx("abc", "123", "あいう");
こんな風に呼び出すと、特殊配列 @_ に頭から代入されて呼び出されるよ。
当然、
@list = ("abc", "123", "あいう");
&xxx(@list);
と同義だよ。
この辺の話を覚えて、次回は、名無しさんならエラー、っていう
ソースに改造してみるよ。
#投稿が遅れてごめんね。
#遅れてもdat落ちや削除されない限り途中で放棄することはないからね。。
0393月宮あゆ ◆XalkKQX1is
02/12/19 20:58ID:???そうなんだ‥
知らなかった
ちょっと恥ずかしいな
>>384
えっ
そんなにあるのっ?!
なんだかすごいね
>>385
Perl、ってクラスって言うのかな…?
呼び方とかよく知らないや。。
>>389-391
遅れてごめんね。
0394 ◆soCKet026k
02/12/21 01:51ID:cbygjUhv0395Perlは時代遅れ
02/12/21 18:38ID:???月宮あゆのPHP教室きぼんぬ
0396nobodyさん
02/12/21 18:58ID:???で、PHPの勉強にすることにしたので、
おれもPHP教室を希望します。
ちょっとづつでいいのでお願いしたいです。
0397nobodyさん
02/12/21 19:50ID:???0398nobodyさん
02/12/21 20:29ID:???確かに今さらPerlっつってもね。
でも、月宮あゆ君はよくがんばってると思うよ。
今後もがんばってもらいたいね。Perlで移行!!。
0399nobodyさん
02/12/23 03:38ID:1Wxw8/wHいや、なにか役立つでしょ。うん。
それとも先にcかphpを勉強した方が良いのか・・・?
0400nobodyさん
02/12/23 04:21ID:???趣味にやってるぶんには頭の体操になるしPerlでも良いと思うよ。
Cは用途が違うし難易度が高いから、始めるならPHPのほうが良いと思うよ。
がんばろっ♪
0401nobodyさん
02/12/23 20:45ID:???使い捨てスクリプト書くのとかにはPerlはすごく便利だよ。
CとPerlは構文が似てるし、Perlをやっても全くCに役立たない、という訳でもなし。
0402399
02/12/23 22:05ID:???レスどもです。
Perlは勉強していきます。役には立ちますよね。
次にPHP、そしてCという順にやっていきます。がんがります。
0403nobodyさん
02/12/23 23:37ID:???Perlは今後、使用者は減るけど使えないわけじゃないから勉強してもいいと思うよ。
でも、最終的にCするんだったら、ぼくはPHPを強く勧めるよ。
Perlから始めちゃうとPerl独自の癖がつくのでPerlしかできなくなる危険性があるので、
PHP勉強した後、Perlを勉強したほうかいいかもしれないね♪ がんがれ!
0404月宮あゆ ◆XalkKQX1is
02/12/24 07:18ID:???|. ノノソハ)))
(\リリ ´ー`)リ < エラー画面を作る
(ニE(#つo⊂#)
じゃあ、まずはソースだよ。
ttp://www.geocities.co.jp/SiliconValley-Sunnyvale/8274/perl/perl0007.txt
&error("エラーメッセージ");
としてサブルーチンを呼びだすと、
( 特殊配列 @_ の0番目の要素だから $_[0] )
エラーメッセージが $_[0] に入って参照するようになってるよ。
こういうエラーのサブルーチンはよく見かけるね。
ぜひ使えるようにしようね。
次回は、環境変数について勉強するね。
0405月宮あゆ ◆XalkKQX1is
02/12/24 07:21ID:???うん、遅くなってごめんね
>>395-396
ボクも今、PHPは勉強してるところなんだよね
ちょっとボクにはできそうにないよ
ごめんね
>>397-402
確かにこれからはPHPの時代に変わっていくかもしれないね。
>>403
elsif 、とかPerl以外にみたことないよ。。
0406nobodyさん
02/12/24 14:14ID:???0407nobodyさん
02/12/24 20:36ID:???Python だと elif
PHP では、 elseif, else if
Perl で、無理に独自のスタイルに馴染まなくても
C ライクなプログラミングも出来るよ。
0408 ◆soCKet026k
02/12/24 23:28ID:2kS8TiT1ソースのHTMLが解釈されて見にくいぽ。。。
0409nobodyさん
02/12/25 00:07ID:???あゆタン
0411nobodyさん
02/12/25 14:14ID:???>Perl で、無理に独自のスタイルに馴染まなくても
>C ライクなプログラミングも出来るよ。
独自スタイルを使わずしてPerlは動くのか?
C知らずしてCライクは無理だろ。もうちと考えてかけよ。
0412(´・ω・`)
02/12/27 23:58ID:???0413nobodyさん
02/12/29 18:10ID:uoxci6sX0414nobodyさん
02/12/29 21:05ID:???0415nobodyさん
02/12/31 13:32ID:qLQW6luAオマエモナー
0418月宮あゆ ◆XalkKQX1is
03/01/02 14:41ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 環境変数 (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} : そのページへのリンク元アドレスが入ってるよ。
こんな感じかな。
次回は他の環境変数と、スペースがあまったら実用例を書いてみるね。
0419月宮あゆ ◆XalkKQX1is
03/01/02 14:44ID:???>>406
無料サーバかな?
規約違反するなら infoseek かトクトク
規約違反しないなら XREA がいいと思うな
>>407
Python なんて言語聞いたことない…
他は聞いたことあるけど。。
>>408
ボクもよくわからなかったんだけど410さんが言うにはIEの仕様みたいだね・・・
これはしかたないね
>>409
今は、あけましておめでとう、っていう時期になっちゃったね
ごめんね
>>413
見てくれてたのかな、ありがとうね
これからできるだけ顔を出したいと思ってるんだけどね
最近いそがしくて・・
0420nobodyさん
03/01/03 22:48ID:jx+nlJxMあけおめ、ことよろ、ガンガレ
0421nobodyさん
03/01/05 00:33ID:???0422nobodyさん
03/01/05 14:58ID:???|. ノノソハ)))
(\リリ ´ー`)リ
(ニE(#つo⊂#)
0423月宮あゆ ◆XalkKQX1is
03/01/06 19:32ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 環境変数 (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 関数も使えないサーバーもあるらしいよ。。
こんなサーバーは(たぶん)どうやってもホスト名は取得できないよ。
わからないことがあったら、サーバーの管理人さんに聞いてね。
0424月宮あゆ ◆XalkKQX1is
03/01/06 19:33ID:???おめでとう、今年もよろしくね。
>>421
ん?なに?
>>422
Janeで読んだら「ここ壊れてます」、って言われる
なんでだろう
0425nobodyさん
03/01/06 23:38ID:???0426とりあえず
03/01/07 01:03ID:mvf11T4j0427nobodyさん
03/01/07 22:45ID:???0428>427
03/01/08 01:50ID:???0429nobodyさん
03/01/08 11:47ID:???そういや1月7日はあゆちゃんの誕生日だったっけ。
おめでと〜。
関係ないけど、
このスレでの「月宮あゆ」は共有コテにして、トリップだけ別々にすればいいと思うが。
俺は「C言語CGI」スレの住民だけど、あゆのレスが面白くてこっちにもいてみたり。
0430PHP月宮あゆ
03/01/08 12:04ID:???つぅかnobodyさん−>月宮あゆ
を提唱しようではないか。と。
取りあえず次スレはWebProg総合スレにして欲しいっす。
初心者スレとかも良いかもね。
0431月宮あゆ ◆XalkKQX1is
03/01/08 20:48ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 環境変数 (3)
(ニE(#つo⊂#)
じゃあ、掲示板に書きこんだ人のホストを記録するよ。
簡単に言うと、ログファイルに記録すればいいんだけど、
ログファイルにそのまま記録しちゃうと、読む人にホストが見えちゃうんだよね。
たぶんここにいる人たちはホスト開示、っていうのは嫌だと思うんだ。
コメントにする、っていうのも、ソースを見られたらばれちゃうよね。
じゃあ、こんなことをしてみよう。
書きこむときに
<a href='mailto:メール'>名前</a>>メッセージ
っていう書き方をやめるんだ。こうじゃないとホストが筒抜けになっちゃうからね。
じゃあ、ホストを記録できるようにするには、
<a href='mailto:メール'>名前</a>>メッセージ(ホスト)
みたいにして、表示するときに消してやるといいよ。
表示する欄をいじってみるね。
foreach (@log){
$_ =~ s/\([\w\.-]\)\n$//;
print "$_<hr>\n";
}
でも、このままだと穴があるよ。
行数が入らないから次回にまわすね。
0433月宮あゆ ◆XalkKQX1is
03/01/08 20:50ID:???再取得したらなおったよ
ありがとう
>>426
ありがとう、うれしいよ
>>427
ど、どうしたの?
>>429
ありがとう。
>>429-430
やりたいことがよくわからないよ
ボクの名前の人がいっぱいいて、
みんながいろいろ教えられるスレッドにしていく、ってこと?
0434月宮あゆ ◆XalkKQX1is
03/01/08 20:51ID:???うーん・・・
できればsplitあたりを使って今回やりたかったんだけど
行数が入らないからフォーマットは次回まわしかな
0435429(みんなごめんよぅ)
03/01/09 13:52ID:???重要な語句が抜けてますた(*´Д`)
質問に「答える人達が」共有であゆコテを使おうってことを言いたかったんだ。
「◆XalkKQX1is」あゆ一人だけだと、負担がかかるんじゃないかと思ったから。
気の回しすぎだったらごめん。
軽い気持ちで吊ってくるっす。
0436nobodyさん
03/01/10 16:37ID:???0437nobodyさん
03/01/11 02:57ID:???それなら、AYUAYUっていうトリップ探して付けてみたら?
そっちの方が雰囲気出るかも
ただ、◆Xalk..も◆AYUAYU..も掲示板でpassを晒したら、
関係ない奴が偽物として入ってくると言う痛い罠
passの配布方法はどうするの?
0438nobodyさん
03/01/11 10:37ID:???0439nobodyさん
03/01/11 11:29ID:???0440437 ◆AYUwmuUytk
03/01/11 13:11ID:???自分ダメダメっすね(^.^;
0441月宮あゆ
03/01/11 21:02ID:???〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < うぐぅ♪
((ニE/⌒ヾ∞"ヽ \____________
(こ) ∞ |こ)
く__∞,ノ
し' し'
0443nobodyさん
03/01/15 12:49ID:???0444山崎渉
03/01/15 13:35ID:???0445西野つかさ
03/01/15 18:27ID:NGnYg/Kg0446nobodyさん
03/01/15 20:08ID:BpytE0q00447ひろゆき
03/01/15 20:58ID:XI5HMpQjいまどき(仕事以外で)使ってる人いるんすかねえ、、、
0448nobodyさん
03/01/15 21:16ID:???電2>基礎から丁寧に説明してくれるので非常に分かりやすい
0449nobodyさん
03/01/15 22:14ID:???0450nobodyさん
03/01/16 00:04ID:juXMvCeg0451nobodyさん
03/01/16 03:29ID:???降臨きぼーん
0452nobodyさん
03/01/16 09:44ID:???電2ってなによ
0454210.159.255.255
03/01/16 16:35ID:iMxUcVql0455nobodyさん
03/01/16 17:26ID:???0456nobodyさん
03/01/16 19:04ID:xD66X4/70457nobodyさん
03/01/16 19:13ID:???0458月宮あゆ ◆XalkKQX1is
03/01/16 22:07ID:???|. ノノソハ)))
(\リリ ´ー`)リ < ログファイル (1)
(ニE(#つo⊂#)
前回はホストの記録をやってみたわけだけど、実は拡張子が、
.cgi とかじゃないファイルは、外部から参照されちゃうことがあるんだ
(でも、基本的にサーバーの設定に依存するよ)
log.cgi か何かにリネーム(名前を変更)して、スクリプトも少し
書き直したらこの問題は解決されるね。
じゃあ今回は、少し重い掲示板を作る、っていう想定でやってみるね。
ここでは表示欄にテーブルを組ませたりするよ。
ちょっとここで考えてみると、前回までと同じように、ログファイルに
書き込んでると、容量がどんどん大きくなっちゃうよね。
それは困る、っていうことで、一般的な掲示板では、【区切り文字】を
使って、名前、とかの要素を区切って保存してるよ。
2ちゃんねるでもこれは同じだよ。
http://pc.2ch.net/php/dat/1014096840.dat
名前<>E-mail<>投稿日<>本文<>(サブジェクト)
っていう感じに <> で区切られて保存されてるのがわかると思うよ。
区切り文字は、 <> が一番メジャーで、次に , とか : とか | を見るね。
別に何でもいいんだけどね。でも、本文にその区切り文字があると、
そこで区切られちゃうから、それを避けるようにすればいいね。
じゃあ、今回は
名前<>E-mail<>投稿日<>本文<>ホスト
っていう形式でやってみることにするね。
0459月宮あゆ ◆XalkKQX1is
03/01/16 22:14ID:???うーん・・
ボクは別にそれでもいいけど
結構大変な仕事を継続してやってくれる人はいるかな…?
いるならボクは大歓迎だよ
>>437 >>442
トリップのキーはすぐに割れそうな気がするキーなんだけど…
えっと、他のスレでもこのトリップ使ってるから、
公開するつもりはあまりないよ、ごめんね
>>447
COBOL…?
ごめん、聞いたことないよ。。
>>448-449
えっ?!
今みてみたけどホントに掲載されてるね
うれしいよ、今度からも頑張るから応援してね
>>448
そんな難しいこと書いてるかなぁ…
どのへんから分からないのか教えてほしいな
>>451
遅くなってごめんね
>>457
スレ違いだよっ!
0460nobodyさん
03/01/17 00:02ID:???あゆあゆ降臨
キタ─wwヘ√レvv~(゚∀゚)─wwヘ√レvv~─ !!!
俺はスローペースでもOK
てか、あゆあゆは一人であとは普通に教えあえばいいと思うよ。
0461nobodyさん
03/01/17 00:31ID:???0462nobodyさん
03/01/17 01:33ID:???〃┏━━
( ) ( )
(.〆⌒ヽ )
(∴゚ρ゚∴) < いないよ>>461
( £ £ )
( £ゑ££ )
(££ゑ£)
|. ノノソハ)))
(\リリ ´ー`)リ
(ニE(#つo⊂#)
0463AIR ◆AIR/AeaCbM
03/01/17 22:12ID:???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´ _,,. ‐''" / ハ\ / /
0464nobodyさん
03/01/18 06:38ID:q6+JV5fJシロウトがでたらめばかり書くな。
0465nobodyさん
03/01/18 06:40ID:q6+JV5fJ月宮あゆ ◆XalkKQX1is ドシロート うせろ。
0466nobodyさん
03/01/18 16:34ID:???0467月宮あゆ ◆XalkKQX1is
03/01/19 07:34ID:???|. ノノソハ)))
(\リリ ´ー`)リ < ログファイル (2)
(ニE(#つo⊂#)
ログファイルをどんなフォーマットにするか考えたら、
違う形式で保存されてるんだから、
読みこむときにも工夫しないと読みこんでも変なデータになっちゃうよ。
それで、特定の文字で区切る split っていうのが用意されてるんだ。
● = split ◆, ★
スカラー変数 ★ を正規表現で指定した文字列 ◆ で区切って
配列の要素にして配列 ● に代入するよ。
★ を省略すると、 $_ に対して処理をするよ。
@data = split /<>/, $_;
と、
@data = split /<>/;
は、同じ意味だよ。
あと、こんな指定の仕方もできるんだ。
($name, $email, $date, $message, $host) = split /<>/;
これは 0 番目の要素が名前、ってわかってるなら、
スクリプトは $data[0] って書くより書きやすくなりそうだね。
じゃあ次回は、このへんをまとめて、掲示板に反映させてみるよ。
0468月宮あゆ ◆XalkKQX1is
03/01/19 07:36ID:???それもそうだね。
ボクもそれがいいと思うよ。
>>461
結構大変かもしれない。。
>>463
よくできたアスキーアートだね
AIRの観鈴さん、ってわかるよ
こんなの作れる人すごいなあ。。
0469劉邦
03/01/19 12:55ID:iJfTCNLl0470初期の頃胴の長いあゆ書いてた奴
03/01/19 13:00ID:???そうでもないよ。
いきなり全部覚えるのは無理だし使うものは限られているので
自分の使うものだけを取りあえず書きながら覚えていけばいいよ。
後は処理する文字列の特徴をよく把握することだね。
0471nobodyさん
03/01/19 13:08ID:???冬厨様はお帰りください。
>>469
正規表現で一冊の本になったりするから、奥は深いけど、
>>470さんの言うとおり、最初は使うのだけ覚えて、
あとは少しづつできる範囲を広げていけばいいじゃないかな。
0472nobodyさん
03/01/19 15:47ID:???0475月宮あゆ
03/01/20 09:13ID:???〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < うぐぅ♪
((ニE/⌒ヾ∞"ヽ \____________
(こ) ∞ |こ)
| ∞,|
| ∞,| 復活
| ∞,|
| ∞,| 胴長あゆ
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
く__∞,ノ
し' し'
0476nobodyさん
03/01/21 19:34ID:eVlnRoM0それは長すぎだろ。
0477nobodyさん
03/01/21 20:26ID:???〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < 了解です。
((ニE/⌒ヾ∞"ヽ \____________
 ̄し'し'  ̄
0478nobodyさん
03/01/21 20:28ID:???それでも長すぎだろ。
0479月宮ぁゅ
03/01/21 20:40ID:???〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < うぐぅ♪
((ニE/⌒ヾ∞"ヽ \____________
(こ) ∞ |こ)
| ∞,|
く__∞,ノ
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
ノ ノ ノ ノ
し' し'
0480 (((\リリ ´ー` リ < これでどう?
03/01/21 21:53ID:???0482nobodyさん
03/01/22 02:01ID:nskHLtl40483f
03/01/22 02:14ID:ZsLNgUOG◎浮気素行調査
彼氏、彼女、妻、夫の浮気を調査致します!!
◎盗聴器盗撮機発見
あなたの部屋に誰かが仕掛けているかも!!
◎行方調査
行方不明になっている家族の消息を調査致します!!
◎電話番号から住所割り出し
一般電話、携帯から住所を割り出し致します!!
◎ストーカー対策
社会問題ともなっているストーカーを撃退致します!!
その他人生相談からどんなお悩みでも解決いたします!!
24時間受付 090−8505−3086
URL http://www.h5.dion.ne.jp/~grobal/
メール hentaimtt@k9.dion.ne.jp
グローバル探偵事務局
0484nobodyさん
03/01/22 04:10ID:???〃┏━━ 、
パタパタ | ノノソハ)))
(((\リリ ´ー` リ ←こいつが毒カレー女に見えてしかたがない
((ニE/⌒ヾ∞"ヽ
 ̄し'し'  ̄
0485nobodyさん
03/01/22 10:38ID:???・ウド鈴木
・毒カレー女
・もののけ姫歌ってた人
ほがにいねーがー?
0489nobodyさん
03/01/23 17:44ID:???0490nobodyさん
03/01/24 01:59ID:o0DPXSNm上げるなよ。冬厨来るだろうが。ヒキコモリモナ
0491490
03/01/24 02:09ID:???吊ってきます。スマソ
0492nobodyさん
03/01/24 22:18ID:???PHPでもこういうスレがあったらな…
0493(((\リリ ´ー` リ < 長うぐぅ♪
03/01/24 22:32ID:???最近はPHPマンセーだからご要望があれば答えるよ。うぐぅ。
0494nobodyさん
03/01/25 00:44ID:???0495nobodyさん
03/01/25 03:51ID:???「月宮あゆの.htaccess教室」とか「月宮あゆのRuby教室」とか「月宮あゆの万引講座」とか
乱立したらそれはそれで楽しそうなんだが月宮あゆの中の人も大変になりそうだな。
0496nobodyさん
03/01/25 12:36ID:???過去ログぼーっと見て、間違いに突っ込まれてないので指摘。
>>37
違う。
Cのif文 = if(条件)文 else 文
Cの文 = 単文の最後に;をつけたもの または 単文を;区切りで並べて{ }で囲んだもの
Perlのif文 = if(条件){単文を;区切りで並べた物}else{単文を;区切りで並べた物}
だから。
これにより、Cではelseの直後に文が来てもいいが、Perlでは { が来なければ行けないと分かる。
詳しくは
ttp://member.nifty.ne.jp/maebashi/programmer/c_yota/semicolon.html
0497(((\リリ ´ー` リ < うぐぅ♪
03/01/25 12:43ID:???>まいたけから来ますた。
・・・どこ?
0499マ板研をまいたけと呼ぶ会
03/01/25 12:52ID:???http://www.ktplan.net/teciai/
>>498 { }の有無を強調したかっただけ。
0500nobodyさん
03/01/25 19:41ID:???いや、>>37でいいたいのはelse ifとelsifの違いじゃないのか?
というかなんで今さら>>37に(ry
0501nobodyさん
03/01/25 20:37ID:???'´ ヽ.
,' ノノノ)))〉
く((レ゚ ‐゚ノァ >>500
く/jつつ >>496 の上2行読みましたか?
/__il〉 >>37が言いたいことについてはその通りだと思いますが、内容が間違ってます。
し'ノ
ま、ここはム技板じゃないし、
「なんか難しい理由があってelsifを使うらしい、 理由は忘れたけどタイプ数も少なくて楽だしラッキー」
でもいいと思います。(でも嘘を言って回るのはやめましょう)
0502月宮あゆ ◆XalkKQX1is
03/01/25 23:14ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 掲示板
(ニE(#つo⊂#)
ここまでのまとめのソースだよ。
どういう処理をしてるのか必ずわかるようにしておいてね。
http://www.geocities.co.jp/SiliconValley-Sunnyvale/8274/perl/perl0008.txt
▼ どうも正確に出ない、って言う人がいたら、右クリックして保存するといいかも。
じゃあ次回は、文字列の処理に関することを勉強するね。
#じゅうぶんテストできてないからおかしくなったりしちゃうかも。。。
0503月宮あゆ ◆XalkKQX1is
03/01/25 23:17ID:???最初は難しく思うかもしれないね。
でも少しずつ複雑なパターンに慣れていくといいんじゃないかな
>>495
ボクができそうなのは .htaccess くらいかな・・
あとは誰か他の人がやってくれるならいいかもしれないね
それはそうと、最後のやつ、どういう意味だよっ!
0504nobodyさん
03/01/26 01:54ID:NkO4LfXaいや、君の本業というか・・・
0505nobodyさん
03/01/26 01:55ID:???0510nobodyさん
03/01/29 08:50ID:???〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < age
((ニE/⌒ヾ∞"ヽ \____________
(こ) ∞ |こ)
く__∞,ノ
し' し'
0511月宮あゆ ◆XalkKQX1is
03/01/29 20:47ID:???|. ノノソハ)))
(\リリ ´ー`)リ < length
(ニE(#つo⊂#)
じゃあ、今度は新しい関数、 length について勉強するよ。
掲示板にものすっごく長い書き込みをされちゃったら、
とっても重くなっちゃったり大変だよね。。
じゃあ、今回は一定以上長い書き込みは禁止するような
方法を説明していくことにするね。
● = length ★
変数 ★ の長さ(バイト数)を返して ● に代入するよ。
たとえば、 1KB 以上の書き込みを禁止したいなら、
if ((length $in{message}) >= 1024) { &error("本文が長すぎだよ。。"); }
こんなふうに書けばいいね。
1KB=1000バイトだと思ってる人がいるかもだけど、1KB=1024バイトだよ。
if の条件部分が ((length $in{message}) >= 1024) っていう風に
2重カッコになってるけど、「ここは先に処理してね」っていう意味で使ってるよ。
>= 演算子は優先度が低いから、カッコを外しても正常に動作するよ。
このへんがよくわからないなら、カッコをつけててもまったく問題ないから、
あまり気にしなくてもいいよ。
次回は、ファイルテスト演算子について説明するね。
0512月宮あゆ ◆XalkKQX1is
03/01/29 20:48ID:???ボクは食い逃げなんてしないよっ
ひどいこと言わないで
>>506
「口が滑った」っていうのは、本音ってこと?
ひどいよっ!
0514nobodyさん
03/01/30 00:50ID:???if (length($in{message}) >= 1024) { &error("本文が長すぎだよ。。"); }
って書いちゃうけど、駄目?
0515nobodyさん
03/01/30 09:22ID:???うぐぅに逆らうな
0516ゆーいち
03/01/31 04:26ID:???★を省略すると$_が適用されるな。
それとmessageが裸の王様だ。
0518nobodyさん
03/02/01 08:44ID:???キロが1000だろーが1024だろーが何が違うんだ?
掲示板ごときでそんなこと気にしても役に立たんよ。
どっちも「約500文字以内」と注意書きを書くだけのことだし。
真面目に言ってるんじゃなく、あゆあゆの楽しい雑学教室♪などのつもりなら、
1KB=1024バイト、1kB=1000バイト、ネットワーク速度表記などで使われる
1Kbps=1024ビット/秒 くらいまで書いたら?
0519nobodyさん
03/02/01 08:45ID:???順次追加して覚えていけばいいんじゃない?
モレモ length() 派ダガナー
0520519
03/02/01 08:46ID:???0521nobodyさん
03/02/01 17:46ID:I7T2CIzoから来ますた。あゆがんがってね。
0522nobodyさん
03/02/01 18:33ID:U5MszDvjif (1024 <= bytes::length($in{message}) { &error("1024bytesを越えています。");
0523月宮あゆ ◆XalkKQX1is
03/02/01 23:06ID:???|. ノノソハ)))
(\リリ ´ー`)リ < ファイルテスト演算子
(ニE(#つo⊂#)
ファイルテスト演算子は、こんなことができる演算子だよ。
・このファイルがあるかどうかチェック (-e)
・ファイル(ディレクトリ)が読めるかどうかチェック (-r)
・ファイル(ディレクトリ)に書けるかどうかチェック (-w)
・ファイルかどうかチェックする (-f)
・ディレクトリかどうかチェックする (-d)
・ファイルのバイト数をチェックする (-s)
これくらい知ってるといいね。
実例だよ。
if ( -e "test.txt" ) { print "ファイルがあるよ"; }
else { print "ファイルないよ"; }
if ( -r "test.txt" ) { print "ファイルから読めるよ"; }
else { print "ファイルから読めないよ"; }
if ( -f "test.txt" ) { print "通常ファイルだよ"; }
else { print "通常ファイルじゃないよ"; }
$size = -s "test.txt";
print "$sizeバイト";
他にもいろいろあるんだけど、また必要になりそうだったら説明するね。
ややこしい説明はなるべく避けたいからね。。
じゃあ次回は、他の文字列処理関係の関数を勉強するよ
0524月宮あゆ ◆XalkKQX1is
03/02/01 23:11ID:???そう言われてみればそっちのほうが綺麗に見えるね…
意味的には同じだよ
>>516
うん、ボクのポケットリファレンスは使いすぎでもうボロボロ…
>>517
全角文字が2バイトってことは一般常識なんじゃないかな…?
>>518
いや、それは行が少しあまったから足しただけなんだよね
別にそんなに深い意味はないよ
>>519
うんうん、そうだよね
>>521
なぜかJaneで既読になっちゃってるよ…
>>522
そんなモジュールがあるんだ…
知らなかったよ
ちょっと調べてみるね
勉強になったよ、ありがとうね
0525nobodyさん
03/02/01 23:11ID:???$a = '100';
$b = '200';
$sum = length $a + length $b;
$sumは6になるでしょうか?
0528nobodyさん
03/02/02 10:23ID:EcuvSD39全角漢字で3バイトとかあるよね。
0529nobodyさん
03/02/02 10:23ID:EcuvSD393になる
と思うんだけどあってるか?
0530nobodyさん
03/02/02 10:40ID:???こう書くと判りやすいかも。@Ans. $sum = 3
0531nobodyさん
03/02/02 10:44ID:XEuBL7+y大仁田さんは。ときにはその半分の500万円を持って行ってしまします。
大仁田さんはどこの興行に出ても。「客が入ったのは俺のおかげじゃ!」と言い。
毎回20〜30万のギャラを持ってゆくのです。
前項でポーゴさんのギャラが破格だったと書きましたが。それでも1試合8万円です。
私たち程度の団体ではまったく考えられない金額でした。★故荒井氏著「倒産FMW」より抜粋
□自殺についての詳細はこちら
http://www.yomiuri.co.jp/hochi/battle/may/o20020516_40.htm
http://www.nikkansports.com/jinji/2002/seikyo020517_2.html
http://www.zakzak.co.jp/top/t-2002_05/2t2002051704.html
荒井元FMWプロレス団体社長を自殺に追い込んだ
大仁田議員に清き一票おながいします!
http://kenji03.hp.infoseek.co.jp/cgi-bin/kage/votec.cgi
0535nobodyさん
03/02/02 13:27ID:???知らずにはまることは無いと思う。
0536月宮あゆ ◆XalkKQX1is
03/02/10 16:39ID:???|. ノノソハ)))
(\リリ ´ー`)リ < substr
(ニE(#つo⊂#)
今日は、文字列の指定部分だけを取り出す、 substr っていう関数について勉強するよ。
● = substr ◆, ★, ■
◆ を対象に、 ★ バイト目から ■ バイト取り出した文字列を ● に代入するよ。
★ がマイナスなら、逆から数えるよ。
■ がマイナスなら、うしろから abs(■) バイト削ったところまで代入されるよ。 … ※
■ が省略されていたら、 ★ で指定した位置以降を全部代入するよ。
※ ● = abs ◆
数値 ◆ の絶対値を ● に返すよ
実例だよ。
$test = "abcdefghijklmnopqrstuvwxyz";
print(substr($test, 0)); # abcdefghijklmnopqrstuvwxyz
print(substr($test, 0, 10)); # abcdefghij
print(substr($test, 10, 10)); # klmnopqrst
print(substr($test, -10)); # qrstuvwxyz
print(substr($test, -20, -10)); # ghijklmnop
print(substr($test, 10, -10)); # klmnop
まあ、柔軟に使えるようにしておいてね。
0537月宮あゆ ◆XalkKQX1is
03/02/10 16:42ID:???うん、優先度を取り違えると間違えそうな例だね
>>526-528
今ちょっと調べてみたけど…
その通りみたいだね
初めて知ったよ
勉強になった、ありがとうね
0538ゆーいち
03/02/13 01:00ID:???俺は使わない派だな。
0539保守
03/02/23 22:30ID:???0542nobodyさん
03/02/25 12:07ID:???0543nobodyさん
03/02/25 18:40ID:???>高校入試が迫ってきてるんで更新頻度が下がるかもしれんです。。
リア厨やったんか
0544nobodyさん
03/02/25 19:38ID:???0545ほっしゅ
03/03/01 15:48ID:???0546初心者
03/03/02 17:25ID:EYbp7ypMexec関数は使えるのですか>
0547nobodyさん
03/03/02 20:12ID:???マジ!?(;´Д`)
0548nobodyさん
03/03/04 04:36ID:OXFQovKc>>547
マジなのかなぁ。
0549nobodyさん
03/03/04 04:40ID:???/:\.____\
|: ̄\(∩´∀`) \ <先生!こんなのがありました!
|:在 |: ̄ ̄ U ̄:|
http://saitama.gasuki.com/kaorin/
0551nobodyさん
03/03/05 00:41ID:5JBlRiko0552山崎渉
03/03/13 17:08ID:???0553nobodyさん
03/03/14 15:38ID:???(^^)
0554月宮あゆ ◆XalkKQX1is
03/03/16 05:27ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 文字コードのおはなし
(ニE(#つo⊂#)
なんか順番が前後しちゃうような気もするけど、文字コードについて説明するね。
文字コードには、 Shift_JIS と JIS と EUC が主にあるよ。
Windows では、メモ帳で入力すると、Shift_JISとして保存されるよ。
Windows のデフォルトは Shift_JIS なんだ。
じゃあ、掲示板に投稿されたとき、 Windows じゃい OS から書きこまれたら、
別の文字コードになって、それを Shift_JIS として扱うから、
【文字化け】しちゃうことがあるんだ。
じゃあ、どうしてやるのがいいのか。
書きこまれたときに、「文字コードを変換」してやるといいね。
jcode.pl っていうライブラリをここで紹介しておくね。
ttp://srekcah.org/jcode/
他にもいろいろ方法があるけど、とりあえず一番楽かな…
require "jcode.pl";
&jcode::convert(\$xyz, 'sjis');
こうすると、 $xyz を Shift_JIS に変換することができるよ。
次回は実例をあげてみるね。
他にも機能があるよ。
ttp://www.mikeneko.ne.jp/~lab/kcode/jcode.html
0555月宮あゆ ◆XalkKQX1is
03/03/16 05:32ID:???>>538
えっと、ボクも普段は使わないんだけど、
他の関数を組み合わせるときは、つけるようにしてるよ。
>>539
ごめんね
これまですごく忙しくて
>>542-544
うん、そうだよ。だから忙しくて…
>>546
ボク、CGIぐらいしかいじったことないから、
そういうことはちょっとわからない、ごめんね
>>547
嫌だった?
>>548
14日だったんだよ
兵庫県は他より遅くて…
0556nobodyさん
03/03/16 07:22ID:???あゆちゃんの中の人、なんか知らんけどお疲れさま〜。
0557nobodyさん
03/03/16 09:43ID:???0558nobodyさん
03/03/17 05:24ID:???0559nobodyさん
03/03/17 18:08ID:???乙〜
0560nobodyさん
03/03/17 23:39ID:???system関数使うといいんでない
$ex = "c:\nantoka\nantoka.exe";
system ($ex);
openを使うときもあるけどたいていはnkf+sendmailを使ってメールを
飛ばすぐらいかなぁ
0561nobodyさん
03/03/18 08:58ID:???【「中の人」終了のお知らせ】 利用者各位
平素は「中の人」をご利用頂きありがとうございます。
長らく皆様に御愛用頂きました「中の人」ですがその役目を
終えたと判断し、このたびサービス終了の運びとなりました。
現在新規サービスを計画中ですので今後とも宜しくお願い致します。
0562nobodyさん
03/03/19 02:55ID:???0563nobodyさん
03/03/19 09:46ID:???乙〜
0564nobodyさん
03/03/19 14:26ID:???0565nobodyさん
03/03/19 14:26ID:???0566nobodyさん
03/03/19 14:28ID:???0567nobodyさん
03/03/19 14:28ID:???0568nobodyさん
03/03/19 14:28ID:???0569nobodyさん
03/03/19 14:29ID:???0570nobodyさん
03/03/19 14:29ID:???〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < うぐぅ♪
((ニE/⌒ヾ∞"ヽ \____________
(こ) ∞ |こ)
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
く__∞,ノ
し' し'
0571nobodyさん
03/03/19 14:29ID:???0572nobodyさん
03/03/19 14:29ID:???0573nobodyさん
03/03/19 14:30ID:???0574nobodyさん
03/03/19 14:30ID:???何の事かさっぱりわかりません。
0575nobodyさん
03/03/19 14:30ID:???〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < COMMON GATEWAY INTERFACE
((ニE/⌒ヾ∞"ヽ Httpサーバとプログラムを繋ぐためのインターフェース規格(?)
(こ) ∞ |こ) CGIの条件とは
| ∞,| ・そのサーバで実行できる形式である。
| ∞,| ・標準入力/出力を扱える。
| ∞,| ・環境変数を取得できる。
| ∞,| なんだよ。
| ∞,|
| ∞,| これさえ満たしていれば言語は問われないんだ。
| ∞,| テキスト処理が得意なPerl君と高速で使える人が多いC君が
| ∞,| 主に使われてるよ。
| ∞,|
| ∞,| もちろん、PascalやLISP(?)、RUBYなどもOK。
| ∞,| WIndowsNTがサーバならVBもつかえるんだよ。うぐぅ。
| ∞,| \____________
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
く__∞,ノ
し' し'
0576nobodyさん
03/03/19 14:30ID:???0577nobodyさん
03/03/19 14:30ID:???0578nobodyさん
03/03/19 14:30ID:???〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < 逃げる直前まで、「お金を払うよオーラ」を出すんだよ。
((ニE/⌒ヾ∞"ヽ \____________
(こ) ∞ |こ)
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
| ∞,|
く__∞,ノ
し' し'
0579nobodyさん
03/03/19 14:31ID:???容量の無駄ですし。
0580nobodyさん
03/03/19 14:31ID:???〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < 了解です。
((ニE/⌒ヾ∞"ヽ \____________
 ̄し'し'  ̄
0581nobodyさん
03/03/19 14:31ID:???0582nobodyさん
03/03/19 14:32ID:???マトモ過ぎるレスが返ってきた・・
0583nobodyさん
03/03/19 14:32ID:???どこに通ってるかって?秘密だよ♪
あゆがわかる簡単な質問なら答えるよ。
0584nobodyさん
03/03/19 14:32ID:???0585nobodyさん
03/03/19 14:32ID:???0586nobodyさん
03/03/19 14:32ID:???0587nobodyさん
03/03/19 14:32ID:???〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < 何でも聞くべし。
((ニE/⌒ヾ∞"ヽ \____________
 ̄し'し'  ̄
0588nobodyさん
03/03/19 14:33ID:???0589nobodyさん
03/03/19 14:33ID:???0590nobodyさん
03/03/19 14:33ID:???0591nobodyさん
03/03/19 14:33ID:???0592nobodyさん
03/03/19 14:34ID:???0593nobodyさん
03/03/19 14:34ID:???0594nobodyさん
03/03/19 14:34ID:???0595nobodyさん
03/03/19 14:34ID:???どうしてelsif,last,redoなんですか
0596nobodyさん
03/03/19 14:34ID:???〃┏━━ 、
| )
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < パクったんじゃなくて意識しただけだからだよ。
((ニE/⌒ヾ∞"ヽ 自分がこっちの方がいいと思ったら変更すればいい。
(こ) ∞ |こ) Perlは効率を優先した言語だからね。
く__∞,ノ else ifとするより2文字稼げる?
し' し' 多分コンパイルの時点で最適化されるのかな?
\____________
0597nobodyさん
03/03/19 14:35ID:???ttp://www.webk.co.jp/singer/image.jpg
0598nobodyさん
03/03/19 14:35ID:???オススメを一通り教えてホスイ マヂで
(逆でもOK、 :このテスト方法はこういうときに便利)
モジュールいろいろ豊富なのはイイんですが、
オレみたいなヘボーンPGはどれを選んで良いのか、
上手い答えがなかなか出せませんので、参考にさせてください
0599nobodyさん
03/03/19 14:35ID:???〃┏━━ 、
| )
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < 基本だけどテストケースをしっかり作ってホワイトボックステスト。
((ニE/⌒ヾ∞"ヽ 職業プログラマじゃないからあんまり詳しくないよ。うぐぅ。
(こ) ∞ |こ)
く__∞,ノ
し' し'
\____________
0600nobodyさん
03/03/19 14:35ID:???主に使われてるっつー割にPerlと違って(CGIの)専門書見かけないのはなんででしょ?
0601nobodyさん
03/03/19 14:35ID:???0602nobodyさん
03/03/19 14:36ID:???〃┏━━ 、
| )
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < この辺なんてどうでしょ? 他にもあったと思うから探してみます。うぐぅ。
((ニE/⌒ヾ∞"ヽ \http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/
(こ) ∞ |こ) \____________
く__∞,ノ
し' し'
0603nobodyさん
03/03/19 14:36ID:???たしかにelsifもlastもredoも文字数は少ないですね
0604nobodyさん
03/03/19 14:36ID:???〃┏━━ 、
>− )
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < 変なこと言うけどPerl/CGIの入門書。
((ニE/⌒ヾ∞"ヽ 上にも書いたけどCGIはある条件さえ満たせば言語は問われないんだ。
(こ) ∞ |こ) 無理してCでの入門書を探すより腐るほど出てる詳しいPerlでの本の方が参考になるよ。
く__∞,ノ 上にも書いたけどPerlはCとかなり似ているから結構読めるよ。
し' し'
暇だから簡単にまとめておくね。
POSTの場合、データは標準入力に入る。
GETの場合、データは環境変数QUERY_STRINGに入る。
リモートホストなどのステータスは環境変数に入る。
出力は標準出力に対して行う。
出力の前にprintf("CONTENT-TYPE: text/html\r\nr\r\n");を忘れないでね。
うぐぅ。あんまり祐一の役にたてなかった気がするよぉ。
0605nobodyさん
03/03/19 14:36ID:???(1) CでCGIを組めるサーバは一般人用にはあまりなく、従って売れ行きが期待できない
(2) CGIは結局引数というか、動作条件を環境変数から得てテキスト(HTML)を吐く
ある意味ごく普通のプログラムが基本である
あたりかな。
0606nobodyさん
03/03/19 14:36ID:???0607nobodyさん
03/03/19 14:36ID:???_ _
〃┏━━ 、
| )
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < Perl >>>>>>>>>>>>>>>>>>> Cだからだよ。
((ニE/⌒ヾ∞"ヽ 可変長のデータ扱うことが多かったり文字列を分割することもしばしば。
(こ) ∞ |こ) 言語仕様は妙だけどテキスト処理に強いPerlの方が簡単にかけるんだ。
く__∞,ノ けど、その代償は大きくて処理速度とシステム負荷は大きい。
し' し' それで、高速かつふざけた量のデータを処理する場合にはやむなくCを使うんだ。多分。
それと、Cがコンパイル言語だと言うことも問題だよ。
CでCGIを組んだ場合、サーバで動くコードにコンパイルしなくちゃいけないんだ。
(たまに.cを.cgiに変えたのに動きません。ってかわいい初心者がいるね。)
でも、無料または一般用プロバイダが提供するサーバでGCC(CC Cコンパイラ)を
提供しているところはtok2しかないよ。うぐぅ。
そもそもtelnetが使えるところも少ないんだよ。
ローカルでサーバと同じOSを使えばいいんだけどスマートじゃないよね。
(クロスコンパイルという手もある。)
その点Perlはインタプリタ(正確には違う。)。ソース互換は大抵の場合保証されているからお手軽なんだ。
C/CGIの教科書を書こうとすると、
「サーバ上でgccを使うってどうやるんですか?」
って質問が殺到するから書きにくいのかもね。
0608nobodyさん
03/03/19 14:37ID:???標準入力/出力と環境変数の取得方法(のページにしっかりあった)さえ知ってれば
普通に組めそうれすね(当方、Perlはそこそこ書けるのでした)
本がないのは結局、CのCGIが一般向けじゃないってことですかね。
0609nobodyさん
03/03/19 14:37ID:???0610nobodyさん
03/03/19 14:37ID:???ttp://www.aifis.ne.jp/heat/assistant/perl-intro.html
とか。
perldoc perlrunとかやるといきなり「Perlインタプリタ」って文字が出てきて鬱。
0611nobodyさん
03/03/19 14:37ID:???0612nobodyさん
03/03/19 14:37ID:???〃┏━━ 、
| )
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < ソースは忘れたけど、スクリプト実行時にコンパイルしてその後に実行してるんだって。
((ニE/⌒ヾ∞"ヽ 怖い人たちにたたかれたらやだから思わせぶりな書き方にしちゃったよぉ。
(こ) ∞ |こ) ごめんなさい。
く__∞,ノ し' し' 案外あるんだね。gcc OKのところ。
0613nobodyさん
03/03/19 14:38ID:???0614nobodyさん
03/03/19 14:38ID:???m/foo/bar/o <-これ
これとか、コンパイルする部分とその場で実行する部分があることを感じさせてくれるよね。
0615nobodyさん
03/03/19 14:38ID:???0616nobodyさん
03/03/19 14:38ID:???/∵∴∵∴\
/∵∴∵∴∵∴\
/∵∴<・>∴∴.<・>|
|∵∵∵/ ○\∵|
|∵∵ /三 | 三| | / ̄ ̄ ̄ ̄
|∵∵ | __|__ | |< うるせー馬鹿!
\∵ | === .|/ \____
\|___/
______.ノ (⌒)
//::::::::|-、 ,-/::::::ノ ~.レ-r┐
/ /:::::::::::| /:::::ノ__ | .| ト、
| /:::::::::::::::| 〈 ̄ `-Lλ_レ′
レ::::::::::::::::::|/:
0617nobodyさん
03/03/19 14:38ID:???〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ TーT リ < うぐぅ。
((ニE/⌒ヾ∞"ヽ
(こ) ∞ |こ)
く__∞,ノ
し' し'
0618nobodyさん
03/03/19 14:39ID:???〃┏━━ 、
| )
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < ((ニE/⌒ヾ∞"ヽ \却下。うぐぅ。
(こ) ∞ |こ)
く__∞,ノ
し' し'
0619nobodyさん
03/03/19 14:40ID:???コンパイル時に評価されるわけじゃないでしょ。
コンパイル時に実行/評価されるのはBEGINブロックね。
for (0 .. 9){
BEGIN{ print "begin\n" }
print "loop: $_\n";
}
0620nobodyさん
03/03/19 14:40ID:???0621nobodyさん
03/03/19 14:40ID:???〃┏━━ 、
| )
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < 却下されちゃったから引き続きボクだよぉ。
((ニE/⌒ヾ∞"ヽ はっきり言ってFORTRANもCOBOLも使ったこと無いよ〜。
(こ) ∞ |こ) 上の方で書いたけど、
く__∞,ノ
し' し' ・サーバで動く形式(ファイルを叩くだけで実行出来ること。 RUNの必要なBASICなどは不可。)
・標準入出力が扱える。
・環境変数が扱える
この3点が可能ならCGIとして使えるよ。
でも、標準入出力や環境変数って言う概念のないOSではこの限りじゃないよ。
FORTRANなら何となく出来そうだよね。
0622nobodyさん
03/03/19 14:40ID:???0623nobodyさん
03/03/19 14:40ID:???いまいちよくわからない・・・
0624nobodyさん
03/03/19 14:41ID:???/*このスクリプトは画期的な新言語「MANKO」を使用しています*/
%doutei = @;
@ key ->> .*
whitebase(%doutei){printrash "%doutei";}
/*最後の処理*/
lastescape;
sub manko{
$kekeke = 1;
hyperif($kekeke){print "ギコハハハ";}
}
__DEAD__
0625nobodyさん
03/03/19 14:41ID:???〃┏━━ 、
| )
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < 基本的にはネームスペースの分離だと思うよ。
((ニE/⌒ヾ∞"ヽ ネームスペースってわかるかな?名前空間とも書いてあるね。C++とかは。
(こ) ∞ |こ) 例えばtest.plをrequireするnamespace.plがあるとするよ。
く__∞,ノ test.plにはayuayu()っていうサブルーチンがあるとすると、
し' し' namespace.plではayuayu()と言うサブルーチンは定義出来ないんだ。
プログラムはプログラマがどっちのayuayu()を呼び出したいかわからないからね。
と、言うことは、人が作ったライブラリを使うときには細心の注意が必要。面倒だよぉ。
そこで登場するのがパッケージ。これはある名前群をグループ化出来るんだ。
例えば、ayuayu()がtsukimiyaと言うパッケージ内で宣言されたとすると、それはtsukimiya::ayuayu()
となって、何もないayuayu()とは区別されるんだ(何もないはMain::に属していることになるよ。たしか。)。
こうすれば、他のライブラリのことは全く気にせず名前を付けられるようになるよね。
もちろん、パッケージ名は他とだぶらないようにする必要があるけどね。
ところで、変数とサブルーチンをグループ化する機能ってどこかで見たことない?
そう、C++などのクラスだよ。
Perlのクラスはパッケージを使って実現されてるんだ。
でも、そのおかげでPerlのクラスはわかりにくい・・・って言うのがボクの私論だよ。
0626nobodyさん
03/03/19 14:41ID:???ついでにmainは省略できるので$::fooとか ::bar('arg')とかできる。
つーか知らないんなら調べてから書け。もしかして猫と同一人物か?
0627nobodyさん
03/03/19 14:41ID:???0628nobodyさん
03/03/19 14:41ID:???|
| うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!
| うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!
| うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!
| うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!
| うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!
| うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!
| うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!
| うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!うるせー馬鹿!
∧ ∧ |/\_________
(,,゚Д゚)____.
(つ/~ ※ ※ \
/※ ※ ※ ※ \
0629nobodyさん
03/03/19 14:42ID:???0630nobodyさん
03/03/19 14:42ID:???勉強になりました。
ありがとー。
0631nobodyさん
03/03/19 14:42ID:???相手にするな
0632nobodyさん
03/03/19 14:42ID:???0633nobodyさん
03/03/19 14:42ID:???ちと質問なんだけど、SSIでPerlスクリプトを叩くとき、
スクリプト自体の絶対アドレスってわからんのかな?
環境変数にはHTMLのがはいってるし
0634nobodyさん
03/03/19 14:43ID:???0635nobodyさん
03/03/19 14:43ID:???0636nobodyさん
03/03/19 14:43ID:???やはりTelnetでPWDして調べるしかないのかの
0637nobodyさん
03/03/19 14:43ID:???0638nobodyさん
03/03/19 14:43ID:???ディレクトリを一個一個上がっていって調べてくれるらしいですが・・・
詳細は知らぬ。それと SSI は知らぬ。スマソ
0639nobodyさん
03/03/19 14:43ID:???my $path = ($ENV{SCRIPT_NAME} =~ /(.+\/)[^\/]+/)[0] . $ENV{_};
$path =~ s!/\./!/!g;
print $path;
0640nobodyさん
03/03/19 14:44ID:???,80
環境変数もコマンドも変な値返してくるサーバーだったのね。
どうでもいいけどあゆあゆどこいったのかな?
変な厨房が追い出したとか書いてあったけど
0641nobodyさん
03/03/19 14:44ID:???C/C++300の技
技術評論社 ISBM4-7741-1312-3
1980+税
青緑っぽい本。
わかりやすい本だとは言わないけど、CでCGIをやる場合の
サンプルコードとかが載ってるから、参考にする程度ならいいかも。
0642nobodyさん
03/03/19 14:44ID:???〃┏━━ 、
| )
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < http://www.gedoh.org/aki/2ch/current/bbs/
((ニE/⌒ヾ∞"ヽ \みんなが一番よく知っているサイトのC言語製CGIだよ
(こ) ∞ |こ)
く__∞,ノ
し' し'
0643nobodyさん
03/03/19 14:44ID:???初期とずいぶん変わったねー
0644nobodyさん
03/03/19 14:44ID:???0645nobodyさん
03/03/19 14:44ID:???0646nobodyさん
03/03/19 14:45ID:???〃┏━━ 、
| )
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ゚∀゚ リ < うーーーーーーーーーーぐぅぅぅぅぅ
((ニE/⌒ヾ∞"ヽ \
(こ) ∞ |こ)
く__∞,ノ
し' し'
0647nobodyさん
03/03/19 14:45ID:???http://www.activestate.com/
0648nobodyさん
03/03/19 14:45ID:???〃┏━━ 、
| )
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ;゚∀゚ リ < うぐぅ、ネタだけどありがとう
し' し'
0649nobodyさん
03/03/19 14:45ID:???0650nobodyさん
03/03/19 14:45ID:???0651nobodyさん
03/03/19 14:46ID:???〃┏━━ 、
| )
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ゚∀゚ リ < うーーーーーーーーーーぐぅぅぅぅぅ
((ニE/⌒ヾ∞"ヽ \
(こ) ∞ |こ)
く__∞,ノ
し' し'
0652nobodyさん
03/03/19 14:46ID:???〃┏━━ 、
| )
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ゚∀゚ リ < ウグゥ━━━━━━(゚∀゚)━━━━━━ !!!!!
((ニE/⌒ヾ∞"ヽ \
(こ) ∞ |こ)
く__∞,ノ
し' し'
0653nobodyさん
03/03/19 14:46ID:???〃┏━━ 、
| )
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ;゚∀゚ リ < うぐぅ、ボクは別人だよぅ
し' し'
0654nobodyさん
03/03/19 14:47ID:???何冊Perlの本を持っていますか?
Perl使えるようになるポイントは何ですか?
0655nobodyさん
03/03/19 14:47ID:???〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < ケント・パイプカットとつくろう!PerlでCGI。これ一冊で十分。
((ニE/⌒ヾ∞"ヽ \____________
(こ) ∞ |こ)
く__∞,ノ
し' し'
0656nobodyさん
03/03/19 14:47ID:???0657nobodyさん
03/03/19 14:47ID:???0658nobodyさん
03/03/19 14:47ID:???〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < あくまでこれは方言だと心得るべし。
((ニE/⌒ヾ∞"ヽ 気がついたら「ハッシュと正規表現無いと死ぬ」みたいなプログラマはダメだよ〜
(こ) ∞ |こ) \____________
く__∞,ノ
し' し'
0659nobodyさん
03/03/19 14:47ID:???0660nobodyさん
03/03/19 14:48ID:???0661nobodyさん
03/03/19 14:48ID:???0662nobodyさん
03/03/19 14:48ID:???0663nobodyさん
03/03/19 14:48ID:???0664nobodyさん
03/03/19 14:48ID:???0665nobodyさん
03/03/19 14:49ID:???0666nobodyさん
03/03/19 14:49ID:???0667nobodyさん
03/03/19 14:49ID:???0668nobodyさん
03/03/19 14:49ID:???〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < OSとPerl処理系とエディタ(うぐぅ、あたりまえだよ〜)。
((ニE/⌒ヾ∞"ヽ 後、参考書は一冊買っておいた方がいいよ〜。
(こ) ∞ |こ) すぐわかるPerlがおすすめ。
く__∞,ノ でも、オブジェクト指向とかパッケージには触れてないから注意。
し' し' CGIは書けてもここの話には付いていけないよ〜うぐぅ。
\____________
0669nobodyさん
03/03/19 14:49ID:???むっしゅむらむら
0670nobodyさん
03/03/19 14:49ID:???0671nobodyさん
03/03/19 14:50ID:???http://www2.gihyo.co.jp/books/bookinfo.asp?ID=621
これですね。その本。
KENTの本はどうですか?
CGIは書くですか? PerlでCGIとして動作するプログラムを
書くのではないのですか?
0672nobodyさん
03/03/19 14:50ID:???0673nobodyさん
03/03/19 14:50ID:???&openfile($file); # openfile は $file を開いて @in に代入する関数
foreach(@in){
s/a//g;
}
}
これでね、$file を10KB と 100KB のものにした場合、なぜか10KB のものの
ほうが処理時間がかかっちゃうんだけどこの理由わかりる?
0674nobodyさん
03/03/19 14:50ID:???〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < 今回は自分の発想を大切にしようと思い、掲示板とかの作り方に関する本は読んでないよ。ボク。
((ニE/⌒ヾ∞"ヽ 唯一読んだのが「すぐわかる」。
(こ) ∞ |こ) 他の言語本と比べてもかなりいい本なので大推薦したの。
く__∞,ノ
し' し' 正解。PerlでCGIというインターフェースに則ったプログラムを書くんだよ。
後、あゆ、ヘリコプターじゃないもん。
\____________
0675nobodyさん
03/03/19 14:50ID:???〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ <後、ムッシュかまやつでもウド君でもないもん!
((ニE/⌒ヾ∞"ヽ
(こ) ∞ |こ)
く__∞,ノ
し' し'
\____________
0676nobodyさん
03/03/19 14:50ID:???||
_||
〃┏━━ 、
| ┃ メ |
| ┃ | |
| ┃ テ |
| ┃ ル |
| ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´_ゝ` リ < ウグググググゥゥゥ....
((ニE/⌒ヾ∞"ヽ \____________
(こ) † |こ)
《《く__∞,ノ
|O| |O|
|O| |O|
|O| |O|
|O| |O|
|O| |O|
し' し'
0677nobodyさん
03/03/19 14:51ID:???0678nobodyさん
03/03/19 14:51ID:???0679nobodyさん
03/03/19 14:51ID:???0680nobodyさん
03/03/19 14:51ID:???何処の板から来たかを明記してくれると、みんなのやる気が上がります!
【クリック】 押してみっかなPart2【クリック】http://live.2ch.net/test/read.cgi/festival/1015607977/l50
0681nobodyさん
03/03/19 14:51ID:???0682nobodyさん
03/03/19 14:51ID:???0683nobodyさん
03/03/19 14:51ID:???〃┏━━ 、
| ノノソハ)))_
/リリ ´ー`)リ/\ うぐぅ
/| ̄ ̄ ̄ ̄ ̄|\/
|愛媛みかん|/
0684nobodyさん
03/03/19 14:52ID:???0685nobodyさん
03/03/19 14:52ID:???\____ ______/
∨
_______ _ ボコッ。
____ 〃┏━━ 、 _γ⌒⌒ヽ、
____. | ノノソハ)))ヾ \ノハ)ヽ)) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
___(\リリ;´Д`)リ#]つ)○);´Д`) < 痛いですぅ〜。
___(ニE( #]つo"/ ⊂[||L[X⊂[||) \________
___∠__∞__/ く7ココココヘゝ
___ し' (_f) (゚_(゚_)
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0686nobodyさん
03/03/19 14:52ID:???http://wow.bbspink.com/leaf/
0687nobodyさん
03/03/19 14:52ID:???//´ ̄ ヽ / ̄ ̄ ̄ ̄ ̄
i ノリノ)))〉 |
, '^ ーノl(l!゚ ヮ゚ノリ‐' ヽ < 嫌っ
ノ , リノjjノ'(.II 中.II)jルjソi |
('"´ "^く 中| ノ \_____
` じ'フ
0688nobodyさん
03/03/19 14:52ID:???0689nobodyさん
03/03/19 14:52ID:???〃┏━━ 、
| ノノソハ)))_ Perlじゃむりだよぉ
/リリ ´ー`)リ/\ うぐぅ
/| ̄ ̄ ̄ ̄ ̄|\/
|愛媛みかん|/
0690nobodyさん
03/03/19 14:53ID:???0691nobodyさん
03/03/19 14:53ID:???0692nobodyさん
03/03/19 14:53ID:???ttp://pc.2ch.net/test/read.cgi/php/988809842/
0693nobodyさん
03/03/19 14:53ID:???0694nobodyさん
03/03/19 14:53ID:???0695nobodyさん
03/03/19 14:53ID:???このスレの発展を祈ってバンザーイ♪
http://homepage2.nifty.com/satp/imgboard/img-box/img20020418205910.gif
0696nobodyさん
03/03/19 14:54ID:???0697nobodyさん
03/03/19 14:54ID:???0698nobodyさん
03/03/19 14:54ID:???0699nobodyさん
03/03/19 14:54ID:???<body>すべての始まりは秋子さん<br>
<img src=Akiko.jpg><br>そして伝説が始まる…
</body></html>
0700nobodyさん
03/03/19 14:54ID:???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
0701nobodyさん
03/03/19 14:54ID:???0702nobodyさん
03/03/19 14:55ID:???〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ ´ー` リ < 帰ってきた
((ニE/⌒ヾ∞"ヽ \____________
(こ) ∞ |こ)
く__∞,ノ
し' し'
0703nobodyさん
03/03/19 14:55ID:???0704nobodyさん
03/03/19 14:55ID:???0705nobodyさん
03/03/19 14:55ID:???0706nobodyさん
03/03/19 14:55ID:???一般の会社の流通コストの部分を参加者に還元をすることにより成り立つ
ネットワークビジネスは、何人かの識者が本などで発言しているのを読ん
でみると、人間的かつ将来有効なシステムだと感じます。
実際、有名な大会社でも参入しています。
コンサルタント、マーケティングのプロの中のプロである船井幸雄氏も、
ネットワークビジネスとそれに携わる個人にすばらしい可能性を見出して
います。 興味のある人には、ぜひ参加して一緒にやってみましょう。
以下のホームページでの説明も御覧ください。
http://ailove22.fc2web.com/lpd/index.html
who@luck.ocn.ne.jp
0707nobodyさん
03/03/19 14:55ID:???0708nobodyさん
03/03/19 14:56ID:???or
use LWP::UserAgent;
0709nobodyさん
03/03/19 14:56ID:???ありがとうございます。まだ意味がわかりませんが
その言葉で検索かけてみます。
0710nobodyさん
03/03/19 14:56ID:???0711nobodyさん
03/03/19 14:56ID:???0712nobodyさん
03/03/19 14:56ID:???がんばってね。
0713nobodyさん
03/03/19 14:57ID:???0714nobodyさん
03/03/19 14:57ID:???0715nobodyさん
03/03/19 14:57ID:???プログラムを作りたいのですが、どのようなライブラリ、関数を使えばよいのでしょうか?
キーワードだけでも教えてください、お願いします。
0716nobodyさん
03/03/19 14:57ID:???それと質問が意味不明だ。
0717nobodyさん
03/03/19 14:57ID:???0718nobodyさん
03/03/19 14:57ID:???0719nobodyさん
03/03/19 14:58ID:???0720nobodyさん
03/03/19 14:58ID:???0721nobodyさん
03/03/19 14:58ID:???0722nobodyさん
03/03/19 14:58ID:???パスワードをランダムで生成する
@letters = ("0" .. "9", "a" .. "z", "A" .. "Z");
srand;
$password = "";
until(length $password == 8){
$password .= $letters[rand ($#letters + 1)];
}
0723nobodyさん
03/03/19 14:58ID:???0724nobodyさん
03/03/19 14:59ID:???0725nobodyさん
03/03/19 14:59ID:???0726nobodyさん
03/03/19 14:59ID:???0727nobodyさん
03/03/19 14:59ID:???0728nobodyさん
03/03/19 15:00ID:???0729nobodyさん
03/03/19 15:00ID:???0730nobodyさん
03/03/19 15:00ID:???0731nobodyさん
03/03/19 15:00ID:???0732nobodyさん
03/03/19 15:00ID:???0733nobodyさん
03/03/19 15:01ID:???0734nobodyさん
03/03/19 15:01ID:???,' /二二 ヽ/⌒l ___________
i イノノノ))))〉=ヲ < の答えがわかりません。
! (l| i] i] || / |
(\ ノノノlゝ"フノ!! /
(∃/ヽ ^||iii》, /
( ゝ 》⌒)中 |
[ ̄「 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
|| ̄||fZZZ7⌒)⌒ヾゝ,. ̄`||
|| ||ニ:Iニ/_7ニヒコ ||
|| ||| ||/:::::/ ||\:::ヽ ||
|| ||| |に~⌒).|| (⌒”) ||
0735nobodyさん
03/03/19 15:01ID:???0736nobodyさん
03/03/19 15:01ID:???|. ノノソハ)))
(\リリ ´ー`)リ
(ニE(#つo⊂#)
乗っ取ることにしちゃったよ。
本当にゆっくりのペースでボクといっしょに勉強していこうね。
実はボクもまだまだ初心者なんだけどね。。
「こういうのはどうやるの?」っていうのは他のスレで聞いてね。
ボクがここで言ったことに対しての質問はここで聞いてくれていいよ。
WebProg板、だから、PerlでCGIを作るってことを前提に進めていこうね
質問があったら、このスレに書き込んでくれたら、
ボクに分かる範囲なら答えられるかもね
あ、最低限HTMLの知識は必要だからそのへんよろしくね。
あと、フリーのCGIでもいいから設置経験があったらいいね。
少しでも中をいじってみたことがあるっていうならなおいいね。
あと、わかりやすくするためなら、かなり強引な解釈で説明してる
ところもあるけど、とりあえずはあまり気にしないでね。
自分でCGIを作る、っていうのは、とても危険なことなんだ。
例えば、お金も持ってないのにたい焼きを買うくらい。
下手をすると、サーバーをダウンさせたりすることもできるから、
自分で作ったものはちゃんとテストして設置しないとダメだよ。
ttp://www.kent-web.com/www/
ここのページで、CGIをローカル(自分のパソコン)で動かす方法を
紹介してるから、参考にしてやってみてね。
じゃあ、今日の話はこのへんで終わるね。
0737nobodyさん
03/03/19 15:01ID:???0738nobodyさん
03/03/19 15:02ID:???0739nobodyさん
03/03/19 15:02ID:???|. ノノソハ)))
(\リリ ´ー`)リ <ヘッダとボディ
(ニ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 っていうのは、「表示する」ってことだと、とりあえずは
思っててくれて大丈夫だよ。
またあとの方で、詳しく説明するからね。
0740nobodyさん
03/03/19 15:02ID:???0741nobodyさん
03/03/19 15:02ID:???Content-Type: text/html; charset=EUC-JP
のように charset も出してあげませう。
0742nobodyさん
03/03/19 15:02ID:???|. ノノソハ)))
(\リリ ´ー`)リ <何か表示してみよう(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
細かい解説は次にしていくね。
0743nobodyさん
03/03/19 15:03ID:???ちゃんと動くならそれでいいとおもうよ
文字コードの話はもうちょっと後で
お話ししようと思ってたんだけど…
0744nobodyさん
03/03/19 15:03ID:???|. ノノソハ)))
(\リリ ´ー`)リ <何か表示してみよう(2:解説)
(ニE(#つo⊂#)
□ 文
1行を「文」って呼ぶよ。最後には、必ず ; をつけてね。
これは、英語の文の最後にピリオド . がついているような感じ。
文の最後にはつけるようにしないと動かないよ。
ボクもたまに書くの忘れてエラー起こしちゃうんだ。
□ #…
# よりあとは、コメントになって、あってもなくても同じだよ。
HTMLの、 <!-- --> みたいな感じだね。
□ \n
\n は改行を表すよ。PerlでCGIを作るときには、
出力する【HTMLソースが改行されるだけ】だから気をつけてね。
表示上、改行したいときは、 <br> を使わないといけないよ。
□ print "●"
● の部分に、表示したい文字を入れるよ。
ファイルハンドルっていうものに関係があるんだけど、もっと後でね。
□ exit
【スクリプト】を終了させるときに使うんだよ。
これがなくても最後までいったら自動で終了するけど、
構造が複雑になってきたら見にくいから書く習慣があった方がいいね。
これで君もPerlプログラマーになれたんだよ。
でもこんな文字を出すだけなんてこと、HTMLでやればいいよね。
次はあんまり面白くないけど、Perlだからできることを勉強するよ。
0745nobodyさん
03/03/19 15:03ID:???0746nobodyさん
03/03/19 15:03ID:???|. ノノソハ)))
(\リリ ´ー`)リ <変数、配列、連想配列(1:説明)
(ニE(#つo⊂#)
じゃあ今回は、変数、配列、連想配列のみっつを覚えようね。
今回は簡単だから説明だけ聞いてね。
次回は使い方を説明するよ。
変数…例えれば、メモ帳1枚に名前をつけたもの。
自由に書いたり、消したり、書き換えたりできるよ。
「スカラー」「スカラー変数」とかいうこともあるよ
「abcの紙」みたいに指定できるよ。
「abcの紙」って指定したいときは、 $abc って書けばいいよ。
配列…例えれば、名前をつけたメモ帳1冊。
0ページから始まって、何ページでも増やせるよ。
「リスト」とかいうこともあるよ。
「abcメモ帳の2ページめ」みたいな感じで指定するよ。
こんなふうに指定したいなら、 $abc[2] って書くといいよ。
連想配列…例えれば、名前がついたメモ帳1冊の紙1枚ずつに、
それぞれ名前違うがついたもの。
「ハッシュ」っていうこともあるよ。
「abcメモ帳のxyzのページ」みたいに指定するよ。
こんな感じなら、 $abc{xyz} って書くことができるよ。
次は簡単な例を見てみようね。
0747nobodyさん
03/03/19 15:03ID:???0748nobodyさん
03/03/19 15:04ID:???0749nobodyさん
03/03/19 15:04ID:???0750nobodyさん
03/03/19 15:04ID:???0751nobodyさん
03/03/19 15:04ID:???|. ノノソハ)))
(\リリ ´ー`)リ <変数、配列、連想配列(2:実行例)
(ニE(#つo⊂#)
□ 変数への書き込み方
$abc = "うぐぅ";
こんな感じにすると、【変数】 $abc には、 「うぐぅ」という
【文字列】が書き込まれたことになるよ。
同じように、
$abc[0] = "月宮あゆ"; # 配列
$abc{def} = "水瀬名雪"; # ハッシュ
みたいなこともできるよ。
□ 変数からの読み込み方
たとえば、 $abc の内容を表示したいっていうときは、
print "$abc";
ってかくとできるよ。
他にも方法はあるけど、とりあえずこれだけ覚えてるといいかな。
ここまでの説明なら、「こんなものが何の役に立つかわからない」と
思う人が多いと思うけど、【変数】がなかったら、何もできないよ。
じゃあ次からは実際に使用例を見ていこうね。
0752nobodyさん
03/03/19 15:04ID:???ハイレベルな話題は、たぶんボクにはできないかな…
うぐぅ
0753nobodyさん
03/03/19 15:04ID:???0754nobodyさん
03/03/19 15:05ID:???0755nobodyさん
03/03/19 15:05ID:???sage進行でマターリとおながいします。>ALL
0756nobodyさん
03/03/19 15:05ID:???|. ノノソハ)))
(\リリ ´ー`)リ <時計を表示してみよう(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
詳しい解説は次にまとめてするね。
0757nobodyさん
03/03/19 15:05ID:???そういう会社に入ってみればいいんじゃないのかな
マターリやっていこうね、よろしく
0758nobodyさん
03/03/19 15:05ID:???0759nobodyさん
03/03/19 15:05ID:???0760nobodyさん
03/03/19 15:06ID:???|. ノノソハ)))
(\リリ ´ー`)リ <時計を表示してみよう(2:解説)
(ニE(#つo⊂#) 算術演算子(1:加法演算子)
Line 5:カッコの中は、秒,分,時,日,月(※1),年(※2)でできてるよ。
localtime で、時間を変数に書き込むんだけど、
これは丸覚えでいいよ。また今度詳しく説明するね。
この例では、6個の変数にそれぞれ書き込んでるよ。
Line11:print の中には【変数】を書くこともできるよ。
その【変数に書き込まれてる文字や数値】を表示するよ。
※注意
月は、実際の月より、1少なくなってるよ。
実際、表示に使うなら、1足して使ってね。
同じように、年は、西暦より1900少なくなってるよ。
【変数】を計算(この例なら月に1を、年に1900を足す)するには、
次のように書くだけで簡単にできるよ。
$mon ++;
$year += 1900;
● ++
っていうのは、変数●に1を足すっていうことだね。
$mon += 1;
と書いてもできるよ。
● += ◆
で、変数●に、数値◆を足すっていうことだよ。
ぜひ年と月も表示できるように改造してみてね、答えは次回書くよ。
0761nobodyさん
03/03/19 15:06ID:???foreach(split(/<>/,$line)){}
は必要な部分を順に取り出しているのか、
それとも一度無名配列に入れるようなことをしているのか教えてください。
0762nobodyさん
03/03/19 15:06ID:???0763nobodyさん
03/03/19 15:06ID:???substrは毎回先頭から数えているような感じがするのですが、
変数使用を少なくする場合これしかないのでしょうか。
0764nobodyさん
03/03/19 15:06ID:???0765nobodyさん
03/03/19 15:06ID:???0766nobodyさん
03/03/19 15:06ID:???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;
こうかね。
0767nobodyさん
03/03/19 15:07ID:???0768nobodyさん
03/03/19 15:07ID:???↓
0769nobodyさん
03/03/19 15:07ID:???222ゲトー
0770nobodyさん
03/03/19 15:07ID:???|. ノノソハ)))
(\リリ ´ー`)リ <時計を表示してみよう(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;
----------------------------------------------------------------
今回はもう行数がなくなっちゃったから終わりだけど、
次は曜日を表示してみようね。
0771nobodyさん
03/03/19 15:07ID:???ボクもわからないことが多いからね…
ストップされちゃうの…?このスレ…
0772nobodyさん
03/03/19 15:08ID:???0773nobodyさん
03/03/19 15:08ID:???|. ノノソハ)))
(\リリ ´ー`)リ <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 = "土";}
== っていうのは、左辺と右辺が等しい、っていう意味だよ。
このへんを使って、曜日を出してみてね。答えは次回載せるよ。
0774nobodyさん
03/03/19 15:08ID:???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;
0775nobodyさん
03/03/19 15:08ID:???の方が綺麗だな。
0776nobodyさん
03/03/19 15:08ID:???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;
0777nobodyさん
03/03/19 15:08ID:???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;
0778nobodyさん
03/03/19 15:08ID:???0779nobodyさん
03/03/19 15:09ID:???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;
0780nobodyさん
03/03/19 15:09ID:???エスケープ忘れてたし・・・。
でも""の中で()は一応エスケープされてると思うんだけど。
ちゃんと実行して検証しているし。
やっぱエスケープは礼儀ということか・・・。
0781nobodyさん
03/03/19 15:09ID:???0782nobodyさん
03/03/19 15:09ID:???〃┏━━ 、
| ノノソハ))) / ̄ ̄ ̄ ̄
Λ_リリ ;´∀`)リ < うぐぅあげ♪
( ⊂#~ ∞~~#⊃ \____
( つ/_∞__|~
|(__)_)
(__)_)
0783nobodyさん
03/03/19 15:09ID:???0784nobodyさん
03/03/19 15:09ID:???|. ノノソハ)))
(\リリ ´ー`)リ <曜日を表示
(ニE(#つo⊂#)
が答えだね。。
配列とか使ってやるのは、もっと先に応用例としてあげたいから、
勝手に応用を使わないでほしいな…
今日の夜くらいに続きをあげようと思うけど、次考えてないんだよね…
ちょっと考えとくね
0785nobodyさん
03/03/19 15:10ID:???|. ノノソハ)))
(\リリ ´ー`)リ <配列の扱い方
(ニ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] 曜日";
ってこんな感じで曜日が出るね。
行数がなくなったから簡潔でごめんね。
次回は、ひととおり計算ができる、算術演算子をやるよ。
0786nobodyさん
03/03/19 15:10ID:???配列の中のひとつだけ、は、 @ じゃなくて $ をつけて、
[0] みたいな【添え字】をつけるよ
ってことだね
0787nobodyさん
03/03/19 15:10ID:???|. ノノソハ)))
(\リリ ´ー`)リ <算術演算子(2)
(ニE(#つo⊂#)
これぐらいはひととおり、全部覚えてね。
数学でおなじみの、計算ができる演算子だよ。
● = ◆ + ★
数値、◆と★を加算(足し算)した値を●に代入するよ。
● = ◆ - ★
数値、◆から★を減算(引き算)してその値を●に代入するよ。
● = ◆ * ★
数値、◆に★を乗算(掛け算)してその値を●に代入するよ。
● = ◆ / ★
数値、◆から★を除算(割り算)してその値を●に代入するよ。
● = ◆ % ★
数値、◆を★で割った、余りを●に代入するよ。
◆と★は小数なら、小数点以下は切り捨てられて計算されるよ。
● = ◆ ** ★
数値、◆の★乗の値を●に代入するよ。
優先順位についてちょっと説明するね。
実際の数学と同じように、加算、減算は、後回しにして計算されるよ。
先に計算したいなら、 ( ) でくくってみてね。
じゃあ次回は、 for でのループ(繰り返し処理)について説明するね。
0788nobodyさん
03/03/19 15:10ID:???0789nobodyさん
03/03/19 15:10ID:???|. ノノソハ)))
(\リリ ´ー`)リ <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 は等しい )
● != ◆ … ●と◆が数値として等しくない
● < ◆ … ●が◆より小さい
● > ◆ … ●が◆より大きい
● <= ◆ … ●が◆以下
● >= ◆ … ●が◆以上
0790nobodyさん
03/03/19 15:11ID:???0791nobodyさん
03/03/19 15:11ID:???|. ノノソハ)))
(\リリ ´ー`)リ < while / until / next / last
(ニE(#つo⊂#)
while / until っていうのは、どっちもループだよ。
じゃあまず、文法の説明をするね。
while ( ● ) { ◆ }
until ( ● ) { ◆ }
● … 式 ( 後述参照 )
◆ … 繰り返す処理
どちらの場合でも、● は、比較演算子を使った条件を指定するよ。
数値比較演算子じゃなくって、文字列比較演算子っていうのも
あるんだけど、それは次くらいに詳しくみてみるよ。
while は、英語で、【〜の間】だね。
Perl でも、条件●が成立する間、◆を繰り返すことになるよ。
until は、英語で、【〜まで】だね。
●が成立するまで(=●が成立しない間)、◆を繰り返すよ。
next / last は、ループを途中でやめたりするのに使うよ。
next は、現在のループを終了して、次のループに入る、っていうこと、
last は、全てのループからただちに抜け出す、っていうことだよ。
じゃあ次回は実例を見てみようね。
0792nobodyさん
03/03/19 15:11ID:???0793nobodyさん
03/03/19 15:11ID:???|. ノノソハ)))
(\リリ ´ー`)リ < ループと文字列比較演算子
(ニE(#つo⊂#)
こんなことをすることは少ないと思うけど、例を挙げるね。
$hoge = "aaa";
until($hoge eq "aaaaaaaaaa"){
$hoge = "a$hoge";
}
この例では、変数 $hoge の前に、次々に "a" を追加していってるね。
"a" が10個並んだところでループ終了だね。
どんな時に、条件に一致するか (真偽) については、次回説明するね。
これも条件で使われるよ。数値として比較する数値比較演算子とは違って、
文字列として比較する、文字列比較演算子っていう名前があるよ。
● eq ◆ … ●と◆が完全に一致
● ne ◆ … ●と◆が一致しない
● =~ /◆/ … ●に◆が含まれる …(※)
他にもあるんだけど、これだけ覚えてれば十分だよ。
※本当は、【正規表現】っていう新しいことなんだけど、
よく使いそうだからここで一緒に覚えようね。
正規表現は、近いうちに勉強するよ。
0794nobodyさん
03/03/19 15:11ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 真と偽
(ニ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 を勉強しようね。
0795nobodyさん
03/03/19 15:11ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 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 "その他";}
このへんはとっても重要だから、しっかり覚えておいてね。
0796nobodyさん
03/03/19 15:11ID:???頑張ってください^^;
0797nobodyさん
03/03/19 15:12ID:???0798nobodyさん
03/03/19 15:12ID:???0799nobodyさん
03/03/19 15:12ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 正規表現 (1)
(ニE(#つo⊂#)
正規表現っていうのを勉強するよ。
ちょっと難しい、ってよく言われるけど、そう思わずに
しっかり読むと必ず分かるから、とりあえず読んでみてね。
正規表現は、柔軟なパターンマッチをすることができるよ。
例えば、特定の文字が含まれるかどうか調べたり、
文字の置き換えをしたり、またあとで勉強するけど、
split っていう関数のパターンに使ったりできるよ。
ここはよくわからなくてもいいよ。
わかりやすく説明すると、
● =~ /◆/★
これで、【変数●がパターン◆にマッチ】っていうことだよ。
【マッチ】っていうのは、簡単に言うと、【●が◆の状態である】
っていうことなんだ。じゃあ、【◆の状態】っていうのを説明するね。
★については、2回後くらいに説明するね。今はなにも書かいでね。
まず、例は、3回前に勉強した含まれるパターンだね。
◆には【普通の文字】と、特別な意味のある、【メタ文字】のふたつが使えるよ。
3回前に勉強したのは、普通の文字だけだね。
じゃあ、メタ文字について説明するね。
続く…
0800nobodyさん
03/03/19 15:12ID:???. … なにか1文字
* … 直前の文字やパターンの0回以上の繰り返し (いくつあってもよい)
+ … 直前の文字やパターンの1回以上の繰り返し (必ず1つ以上ある)
? … 直前の文字やパターンが1つだけあってもなくてもよい
[abc] … [ ] で囲んだ文字の中のどれか1文字
^ … 【…で始まる】という意味。パターンの最初に使う。
$ … 【…で終わる】という意味。パターンの最後に使う。
{5} … 直前の文字やパターンの5回繰り返し
{3,8} … 直前の文字やパターンの3回以上8回以下の繰り返し
例だよ。
if ( $abc =~ /^def$/ ) { print "マッチ"; }
これは、
if ( $abc eq "def" ) { print "マッチ"; }
と、同じ意味になるよ。
とりあえず、何の役に立つかわからなくてもいいから、
使い方は覚えておいてね。
0801nobodyさん
03/03/19 15:12ID:???頑張るよ
ずっと読んでくれてるの?
なんだか嬉しいな
別に気にしなくていいよ
…みんなはこのへんちゃんと理解してくれてるのかな?
わかりにくいところがあったら言ってね。
説明しなおすからね。
0802nobodyさん
03/03/19 15:12ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 正規表現 (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 "アルファベット大文字以外の文字が含まれている"; }
次回は、 ( ) と後方参照について説明するね。
#間違いがあったら指摘してね…
0803nobodyさん
03/03/19 15:12ID:???0804nobodyさん
03/03/19 15:13ID:???0805nobodyさん
03/03/19 15:13ID:???途中で挫折した香具師多いと思われるから、マターリ進行で…
0806nobodyさん
03/03/19 15:13ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 正規表現 (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"; }
次回は、 [ ] を簡略化できる感じの、メタ文字と、
スペースがあまったら正規表現演算子をみてみようね。
今回はちょっと短いけどこれで終わりだよ。
0807nobodyさん
03/03/19 15:13ID:???結構かかりそうだよね…
そんなに難しい話になるまで続くのかな…?
うん、そうだね
まあ実用的なスクリプト作れるぐらいになったら終了、かな
0808nobodyさん
03/03/19 15:13ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 正規表現 (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 とかもあるけど、それはそのとき説明するね。
0809nobodyさん
03/03/19 15:13ID:???「これでとりあえず、正規表現は終わりだよ、次回は配列操作をやるね。」
0810nobodyさん
03/03/19 15:14ID:???ほぼ、一日に1レクチャか、まめだね。尊敬するよ。
下手な日記書いてる奴よっかスゲーなおまい
0811nobodyさん
03/03/19 15:14ID:???∧ ∧ |/\_________
(,,゚Д゚)____.
(つ/~ ※ ※ \
/※ ※ ※ ※ \
0812nobodyさん
03/03/19 15:14ID:???0813nobodyさん
03/03/19 15:14ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 配列操作
(ニ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
次回は、ファイル入出力とファイルハンドルについて説明するね。
0814nobodyさん
03/03/19 15:14ID:???途中でいきなり終わり、なんてことにならないようにがんばるよ
うん、そうだね
これからどんどん寒くなっていくからね
ボクもこの前こたつ出したよ
香里さんの家ってそんなに散らかってるの…
片づけてあとで温かいこたつに入るときもちいいよ
0815nobodyさん
03/03/19 15:14ID:???0816nobodyさん
03/03/19 15:15ID:???|. ノノソハ)))
(\リリ ´ー`)リ < ファイル入出力 (1)
(ニE(#つo⊂#)
今回はファイルの読み書きとファイルハンドルについて説明するね。
・ファイルハンドル
ファイルハンドル、っていうのは、ファイルを開くときに、ファイルハンドル、
っていうものに結びつけて開くんだ。ファイルに書くときも同じだよ。
これにファイルを結びつけてを作るには、 open っていう関数が一番一般的だね。
ファイルハンドルは、半角大文字でつけるのが原則だよ。
ファイルハンドルを使い終わったら、 close 関数で閉じるようにしようね。
open ★, ◆
close ★
★ … ファイルハンドル (半角大文字ならなんでもいいよ)
◆ … ファイル名
ファイル◆をファイルハンドル★に結びつけて開くよ。
じゃあ、 "test.txt" の内容を $test にいれて、表示するサンプルを書いてみるね。
open IN, "test.txt";
$test = <IN>; # こうやってファイルハンドルを変数に代入する
close IN;
print "$test";
Perl の勉強熱心な人は、実際試してみるてね。
今回のプログラムは、いろいろやっていると何か気付くことがあるはずだから、
必ず試しに動かしてみてね。 test.txt の中を書きかえながら。
0817nobodyさん
03/03/19 15:15ID:???0818nobodyさん
03/03/19 15:15ID:???0819nobodyさん
03/03/19 15:15ID:???ここに書き込んだ時点であなたも(以下略
ここの会話がヲタ会話とわかる時点であなたも(以下略
0820nobodyさん
03/03/19 15:15ID:???0821nobodyさん
03/03/19 15:16ID:???|. ノノソハ)))
(\リリ ´ー`)リ < ファイル入出力 (2)
(ニE(#つo⊂#)
前回のスクリプトはみんな動かしてみてくれたかな?
いろいろやってみると、最初の1行しか表示されないことに気付いてくれたと思うんだ。
詳しくはそれはもう少しあとでやるね。
今回はファイルに書き込む方法を説明するよ。
open ★, "> test.txt";
こんなふうに、 > をつけてファイルを開くと、書き込みモードになるんだよ。
このファイルに書き込むには、
print ★ "test";
みたいな感じにするよ。
じゃあ、簡単なカウンターを書いてみるね。
行数が入らないから続くよ
0822nobodyさん
03/03/19 15:16ID:???#!/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;
----------------------------------------------------------------
ちゃんと動かしてみてね。
今回はここで終わりだよ。
0823nobodyさん
03/03/19 15:16ID:???あるなら食べてみたいかも
うん、ありがとうね
0824nobodyさん
03/03/19 15:16ID:???数年前CMやってたの覚えてるし、多分うちの近所のスーパーに行けばまだ売ってると思う。
たい焼きの形をした最中の中にあずきとバニラアイスが入ってまつ。
あずきのバニラアイスのハーモーニーがたまりませんです。
余談
自分暇つぶしに2chのTripFinderスレを読んで自分なりのプログラムを組んでみたです。
CPU負荷かかりまくり、でも任意のTrip探す手間を考えれば楽なもんかな?とか思いながら使ってます。
今度taiyakiって入ったIDを探したいです!
0825nobodyさん
03/03/19 15:16ID:???恥ずかしい…
-[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;
----------------------------------------------------------------
そうなんだ、じゃあボクも近くのスーパーに行って探してみるよ
ありがとうね
0826nobodyさん
03/03/19 15:16ID:???楽しみに見てますです。
それとトリップ付けてみました、別に意味はないので・・・ただunyuなだけです。
コンビニでたいやきアイスは発見できませんでした・・・残念です。
0827nobodyさん
03/03/19 15:16ID:???0828nobodyさん
03/03/19 15:16ID:???0829nobodyさん
03/03/19 15:17ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 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 "$_";} # ● を省略したら、省略の原則、 $_ に入るよ。
この話を応用して次回にもっていくから、絶対に使えるようにしておいてね。
0830nobodyさん
03/03/19 15:17ID:???そう、かな…?
ありがとね
うん、頑張るよ
1日1つ頑張りたいけど、無理な日もあってごめんね
0831nobodyさん
03/03/19 15:17ID:???すっごく楽しみに見てるよ、これからも頑張ってね。
0832nobodyさん
03/03/19 15:17ID:???0833nobodyさん
03/03/19 15:17ID:???|. ノノソハ)))
(\リリ ´ー`)リ < ファイル入出力 (3)
(ニE(#つo⊂#)
今回は複数行のファイルを読み込む方法を説明するね。
open IN, "test.txt";
# 1行だけ読み込む
$test = <IN>;
# 全行読み込む
@test = <IN>;
close IN;
こんな感じにすると、1行ずつが配列のひとつの要素になるよ。
じゃあ、このファイルの中身を表示するには、
foreach (@test){
print "$_<br>";
}
ってやると表示されるよ。
じゃあ次回は、ファイルの読み書きもわかったし、
ユーザーが何か入力したのを受け取って結果を表示する、
ってことを勉強してみようね。
0834nobodyさん
03/03/19 15:17ID:???気に入ってくれてうれしいよ、ありがとうね。
0835nobodyさん
03/03/19 15:18ID:???最初にも言ったけど、ここの教室でやっていることは、
【わかりやすくするために多少強引な説明をしている】ところがあるよ。
基本なんだけど、【わかりにくいし使われもしないから省いている】ところも
たくさんあるよ。他のサイトとか見てると、戸惑うことも多いとおもうけど、
混同させないように注意してね。
0836nobodyさん
03/03/19 15:18ID:???0837nobodyさん
03/03/19 15:18ID:???メルマガとか出してみたら?
0838nobodyさん
03/03/19 15:18ID:???0839nobodyさん
03/03/19 15:18ID:???0840nobodyさん
03/03/19 15:18ID:???0841nobodyさん
03/03/19 15:19ID:???0842nobodyさん
03/03/19 15:19ID:???0843nobodyさん
03/03/19 15:19ID:???(´・ω・)っ旦 <マターリ
0844nobodyさん
03/03/19 15:19ID:???( ´∀`)< このスレきもい♪
( つ \______
(_○___)
0845nobodyさん
03/03/19 15:19ID:???0846nobodyさん
03/03/19 15:19ID:???|. ノノソハ)))
(\リリ ´ー`)リ < フォームデーターの受けとり
(ニ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の世界はとっても広がるよ。
次回は、簡易掲示板を書いてみるね。
#投稿が遅れてごめんね
0847nobodyさん
03/03/19 15:20ID:???それもいいかもね
わかりやすく書き直して、カリキュラムもしっかり組めたら出してみるかも
うん、乗っ取らせてもらったよ
WebProg板のスレはなかなか落ちないからね…
うんうん、マターリしようね
0848nobodyさん
03/03/19 15:20ID:???内容についての質問とか要望があったらメールしてくれてもいいよ
なるべく返信はしたいけど、忙しくて手が回らなかったりしたらごめんね。
0849nobodyさん
03/03/19 15:20ID:???もう来ないのかと思ったけど、待ってて良かったよ。
メルマガいいね!
0850nobodyさん
03/03/19 15:20ID:???気に入らなければ放置してくれれば良いだけなのに…。
0851nobodyさん
03/03/19 15:20ID:???こんな輩がいるからいつまでたってもcgi-lib.plを使う香具師が絶えないんだな
0852nobodyさん
03/03/19 15:20ID:???マジで使ったこと無いけど、何するもんなの?
てか必要なの?
0853nobodyさん
03/03/19 15:20ID:???わざわざ鯖に入れている鬱、、、
0854nobodyさん
03/03/19 15:21ID:???今まで知らなかったよ。(うぐぅ
0855nobodyさん
03/03/19 15:21ID:???#!/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;
----------------------------------------------------------------
0856nobodyさん
03/03/19 15:21ID:???簡易掲示板のソースだよ。
同じフォルダに、 cgi-lib.pl をいれてね。
ボクは途中で放棄はあまりしたくないんだよね
来なくなることはないと思うよ
まあ最初の方はこうやって簡単にやってもいいんじゃないかな?
もうちょっと勉強してきたら、自分のスクリプトの中に書いていこうと思うよ。
フォームからデーターを送られてきたのを、CGI側で取得する機能があるよ。
他にもいくつか機能があるけど、代表的なのはこれだね。
0857nobodyさん
03/03/19 15:21ID:???cgi-lib.plって便利そうだね。
もうちっと詳しく知りたいのでぐぐってきます。
0858nobodyさん
03/03/19 15:21ID:???うん。
ボクの名前でドメインとっちゃった。。
わぁ、ありがとう!
まあ、 cgi-lib.pl は便利なことは便利なんだけど、
ちょっと実行したときの効率があまりよくないんだよね。
また今度、 cgi-lib.pl なしで取得する方法を勉強するね。
0859nobodyさん
03/03/19 15:21ID:???今日タイヤキアイス食った、うまかった。
0860nobodyさん
03/03/19 15:21ID:???この非常用備蓄食は保存性に優れたアルファ米を使っており、自衛隊も戦闘糧食として使用していることから軍事用に転用される恐れもある。
石原都知事はこの件に関して政府と国会に徹底的な調査を要求すると述べた。
「ニュース速報+」【国際】東京都の非常食が北朝鮮に、石原知事激怒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
0861nobodyさん
03/03/19 15:22ID:???自分はcgi-lib使わないで取得、エンコードずっとしてきたから・・・必要性は感じないんだけど知識としてね。
またページには遊びに行くよ!
なんか雰囲気とかもよかったし、勉強できそうなこととかもありそうな予感。
次回の授業を楽しみにしてます!
0862nobodyさん
03/03/19 15:22ID:???0863nobodyさん
03/03/19 15:22ID:???0864nobodyさん
03/03/19 15:22ID:???0865nobodyさん
03/03/19 15:22ID:???そんなもん、コンパイルしてメモリにロードされるかとおもうと
とうてい、使う気にはなれんな。
0866nobodyさん
03/03/19 15:22ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 掲示板 (2)
(ニE(#つo⊂#)
すっごく簡単に掲示板を書いてみたけど、どうだったかな?
やっぱり、機能が少なすぎるよね。
これからはしばらくの間、毎回少しずつ機能を足していく予定だよ。
今回の追加してみる機能は…
・名前欄を作るよ
・メール欄も作るよ
・名無しさんの名前が出るようにするよ
名前、メールは、入力欄を増やして、ログファイルに書き込むように
すれば、簡単にできちゃうよ。
名無しさんも簡単だね。
if(!$in{name}){
$in{name} = "名無しさん";
}
名前欄がなかったら「名無しさん」を代入してるね。
長くて入りきらなくなっちゃったね…
ここには重要な部分だけ書いて、全文はリンクからたどれるようにするね。
ソースはここだよ。
http://www.geocities.co.jp/SiliconValley-Sunnyvale/8274/perl/perl0006.txt
読めない、っていうときは、対象をファイルに保存、かソースを表示してみてね。
次回は、新しく置換演算子を勉強して、いろいろなことをやってみるね。
0867nobodyさん
03/03/19 15:23ID:???cgi-lib.pl は最初だから簡単に取得するために説明してるから、
慣れてきたら自分でやったほうがいいと思うよ
うん、ボクのホームページにも遊びに来てね。
ありがとう
317もあるけど、余計な処理をしすぎっていうか、
もっと簡単に短く単純に書けるよね
まあ自力でやる方法は今度説明するね。
cgi-lib.pl を使うのも CGI.pm もメリットがあればデメリットもあるよね
Perlを考えたアメリカの人は(名前忘れちゃったけど)
「Perlは好きなように書けばよい」っていう言葉を残してるんだから、
人それぞれやり方が違ってもいいと思うな
0868nobodyさん
03/03/19 15:23ID:???違ってたら恥ずかしいから、とりあえず発言撤回させて…
0869nobodyさん
03/03/19 15:23ID:???鮎タンのページの掲示板でおみくじやったら「大凶」と「最大凶」ひいちゃったよ・・・。
これも運・・・。
0870nobodyさん
03/03/19 15:23ID:???だが今人に勧めるのなら既に保守更新されていないcgi-lib.plよりも
標準モジュールとして使えるCGI.pmの方が導入は容易だと思うのだが?
まあそれでもcgi-lib.pmが良いというのなら、ポリシーは人それぞれだからかまわないが。
滑稽だな。そう思うのならそもそもCGI/Perlを選択するのが間違い。
0871nobodyさん
03/03/19 15:23ID:???0872nobodyさん
03/03/19 15:23ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 置換演算子
(ニ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 のなかに " を使いたいときも \" とするといいよ。
このへんのことは、これから先ずっと使うことになるから、必ず覚えるようにしようね。
0873nobodyさん
03/03/19 15:24ID:???そういうこともあるよ
遅れちゃってごめんね
0874nobodyさん
03/03/19 15:24ID:???個人的にtrがすごく知りたいよ、まだいまいち理解してないんだよね。(恥
でも正規表現そのものが便利で難しいみたいだし、まだまだ勉強だね。
次回楽しみにしてます。返答ありがと。
0875nobodyさん
03/03/19 15:24ID:???ということで、じつは・・・
● =~ s#◆#★#g;
なんてのも使えるんだよ。
これなら「/」が多い日も安心ですね。
・・・っていうのは次回でつか?
「1文字ずつ対応させて置換する」って表現ではどうでしょう?>tr|y
$test = '01234-02468-13579-56789';
$test =~ tr/[0-9]/[A-J]/;
print $test; # ABCDE-ACEGI-BDFHJ-FGHIJ と表示
0876nobodyさん
03/03/19 15:24ID:???[]に意味はあるのかい?
0877nobodyさん
03/03/19 15:24ID:???0878nobodyさん
03/03/19 15:24ID:???と書き変えておこうとして忘れてました。
スマ
0879nobodyさん
03/03/19 15:25ID:???q, qq, qw を覚えよーょ。
クォートのエスケープは他の言語でもよく使われるから、
覚えておいて損はないけど。
0880nobodyさん
03/03/19 15:25ID:???こんど♪のスクリプトも改良してほしいですぅ
0881nobodyさん
03/03/19 15:25ID:???さっさと糞してねれ!!
削除依頼出しとけよ!
0882nobodyさん
03/03/19 15:25ID:???0883nobodyさん
03/03/19 15:25ID:???まああんな穴だらけのクリプト晒されりゃいい恥さらしだから無理もないか(藁
0884nobodyさん
03/03/19 15:25ID:???0885nobodyさん
03/03/19 15:26ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 展開とクオート風演算子
(ニE(#つo⊂#)
リクエストがあったから勉強するね。
$text = "うぐぅ";
print "うぐぅ<br>\n";
print "$text<br>\n";
print 'うぐぅ<br>\n';
print '$text<br>\n';
例えば、後々の説明を楽にするために、これを実行させてみてね。
'…' で囲むと、変数名がそのまま出ちゃったり、
ちゃんと改行されなかったりすることがわかると思うんだ。
'…' では、変数やメタ文字は【展開】されないよ。
つまり、囲った文字がそのまま出る、っていうことなんだ。
"…" では、【展開】されるよ。
さっきの例のソースを、全部、
"…" で囲んであるものは、 qq{…} に書き替えができるよ。(展開されるよ)
" が、ダブルクオーテーションっていう記号だから q がふたつあるのかな。
'…' で囲んであったら、 q{…} に書き換えができるよ。(展開されないよ)
こういうのを、クオート風演算子、っていうよ。
ボクは個人的な話だけど、 print は全部 qq{…} で書いてるよ。
続くよ。
0886nobodyさん
03/03/19 15:26ID:???|. ノノソハ)))
(\リリ ´ー`)リ < クオート風演算子
(ニE(#つo⊂#)
qw についても説明するね。
● = qw{★};
★で、半角スペースで区切った文字列を順番に配列●に代入するよ。
これは知らなくてもそんなに影響はないと思うんだけどね…
qr は、取り扱うとしたらもう少し先になるかな…?
あといくつか、クオート風演算子はあるんだけど、代表的なものとしてこのへんで終わりにするね。
{ } って書いたけれど、一定の制約を守っていれば、 { } じゃなくてもできるよ。
一定の制約
・英数字以外の半角文字だったら何でもいいよ。
・ # を使うときは、直前にスペースがあると、コメントと間違うから注意だね
・カッコを使うときは、左右でペアにして使うよ。 { } ( ) [ ] < >
これは、正規表現の時にも使えるんだ。
たとえば、置換演算子の時では…
$test =~ s/xxx/yyy/g;
$test =~ s#xxx#xxx#g;
$test =~ s{xxx}{yyy}g;
これらは全部同じことを表しているよ。
それにしても、ボクはこの授業の内容は全部テキストファイルにしてるんだけど、
→ この行でちょうど1000行に達してしまうんだよね…。
ボク、よくこんなに書いたなあ…
0887nobodyさん
03/03/19 15:26ID:???ボクにはこれ以上うまく説明はできないかな
おんぷちゃんねるのスクリプト…?
改造すべきところなんてあるかな?
どう改造してほしいか言ってくれたら、
もしかしたら1%ぐらいの確立で改造してみるかも
あと、ここでは「あゆ」って呼んでくれた方がうれしいな
0888nobodyさん
03/03/19 15:26ID:???ごめんなさいです。。。
用なし逝って話しますですぅ
0889nobodyさん
03/03/19 15:26ID:???ありがと、そっか〜つまり抜けてる部分とか余ったりするとよくないっぽいんだね。
一つずつってのがポイントみたい。
これでtrは解ったよ、ホントありがと。
うぐぅタン
だんだん難しくなってきたよ・・・。
まだ何とか付いていけてるから、次もよろしく〜
0890nobodyさん
03/03/19 15:26ID:???0891nobodyさん
03/03/19 15:26ID:???0892nobodyさん
03/03/19 15:27ID:???0893nobodyさん
03/03/19 15:27ID:???|. ノノソハ)))
(\リリ ´ー`)リ < サブルーチン (1)
(ニE(#つo⊂#)
Perlで一番重要な、サブルーチンについての説明だよ。
自分で処理を決める関数のようなものがつくれるから、ユーザー関数とかも呼ばれるよ。
サブルーチンは、「宣言」しておくと「実行」できるようになるよ。
じゃあ、宣言の方法を説明するね。
個人的な話だけど、ボクは、 { } の中に改行がくるときは、
インデントすることにしてるよ。インデントっていうのは、
行の始めにタブやスペースをいれて、始まりを右にずらすことだよ。
アンインデント、はこの逆だね。
これを使うと、スクリプトが複雑になってくると見やすくていいよ。
sub abc{
$x ++;
}
これは、変数 $x に 1 を足す、サブルーチンだね。
呼び出すには、 &abc; って書いて呼び出すよ。
サンプル。「2」って表示されるよ。
$x = 1;
&abc;
print "$x";
sub abc{ $x ++; }
サブルーチンはとっても重要で便利だから、必ずマスターしてね。
0894nobodyさん
03/03/19 15:27ID:???わかってくれてうれしいよ
だんだん難しくなっていくね
わからないことがあったら気軽に聞いてね。
0895nobodyさん
03/03/19 15:27ID:???とりあえず今のところ大丈夫だよ。
次は何が出てくるのか楽しみです。
0896nobodyさん
03/03/19 15:27ID:???0897nobodyさん
03/03/19 15:27ID:???常識的なサンプルを提示できないなら、頼むから何もしないでくれ。はっきりいって迷惑。
0898nobodyさん
03/03/19 15:27ID:???おとなしく待てよ行数規制があるんだから
0899nobodyさん
03/03/19 15:28ID:???0900nobodyさん
03/03/19 15:28ID:???my %param = @_;
#何か
return ...;
}
0901nobodyさん
03/03/19 15:28ID:???( ´,_ゝ`) プッ $x= 'A'でも1足すのかよ
$x= 'A';
$x++;
print $x; # これはB
$x= '?';
$x++;
print $x; # これは1
よく頭に叩き込んでおけ
0902nobodyさん
03/03/19 15:28ID:???^ =>最初
$ =>最後
文字
. =文字
[..] =>文字クラス。括弧の中の、任意の1文字
[^..] =>中身以外の文字を1つ
繰り返し
* =以上
+ =以上
{n} =>n回
{n,m} =>n以上m未満
{n,}、{,m} も可能
(?:...) =>まとめるだけでいいとき
(...) =>後から$1とかで使うとき
\1 \2 \3 =>パターンマッチの中で使える。
$1 $2 $3 =>外で使う
0903nobodyさん
03/03/19 15:28ID:???確かに、これだけじゃちょっと・・・
変数のスコープとか、GC,
サブルーチン内でグローバル変数を変更する事のリスクとか。
後できちんとフォローすれば大丈夫。多分。。。
0904nobodyさん
03/03/19 15:28ID:???綾波レイのWEB制作管理教えますれ
http://pc3.2ch.net/test/read.cgi/hp/1023741627/l50
0905nobodyさん
03/03/19 15:29ID:???use strictなんてきらいだよー。
0906nobodyさん
03/03/19 15:29ID:???0907nobodyさん
03/03/19 15:29ID:???0908nobodyさん
03/03/19 15:29ID:???|. ノノソハ)))
(\リリ ´ー`)リ < サブルーチン (2) 返り値
(ニE(#つo⊂#)
サブルーチンでは、返り値 (かえりち) っていうものが作れるよ。
「返り血」とか変なこと言ったら嫌だよ。
$x = &xxx; # $x には abc が代入されるよ。
sub xxx{ return "abc"; }
return ●
…●を返り値として、呼び出し元に戻る。
ちょっとここで注意だけど、この関数は、絶対にサブルーチンの外で
使っちゃだめなんだ。戻る場所がないからね。
ふたつ以上の返り値を送りたいなら、
return ( $a, $b, $c );
みたいに配列にして送るといいよ。
受け取るときは、
( $a, $b, $c ) = &xxx;
こうやって受け取ることができるよ。
それか、配列をあらかじめ作っておいて、
return @xxx;
@xxx = &xxx;
みたいなこともできるよ。
0909nobodyさん
03/03/19 15:29ID:???サブルーチン、はとりあえず (4) か (5) まで続くと思うよ。
今は (4) の途中まで書いてるからね。。
確かに、オートインクリメント演算子は、「1足す」じゃなくて、
「値を1増加させる」っていう機能なのはその通りなんだけど、
そんな扱ってないようなことを勝手に進めないで。
先に「省略してるところもある」ってちゃんと言ってるんだから。
そんなことはあまり知る必要ないんじゃない?
必要最小限のことは付け足すからね。
ボクはPHPはほとんどできないんだよね。。
勉強するにもPHPの入門書が数ないからねえ。。
0910nobodyさん
03/03/19 15:30ID:???0911nobodyさん
03/03/19 15:30ID:???標準ライブラリの中にもその使い方をしているものもあるよ。
ところで、-wスイッチとuse strictの説明の予定はあるの?
コーディングを楽にするためにも、まずその説明をした方が良いと思うね。
同じ意味だと思うよ。
0912nobodyさん
03/03/19 15:30ID:???よかった、前から気になっていたんだ。
0913nobodyさん
03/03/19 15:30ID:???0914nobodyさん
03/03/19 15:30ID:???0915nobodyさん
03/03/19 15:30ID:???foreach
これってフォーイーチ?
フォーリーチですか?
気になって仕方ないです…
お願いします。
0916nobodyさん
03/03/19 15:30ID:???0917nobodyさん
03/03/19 15:31ID:???0918nobodyさん
03/03/19 15:31ID:???0919nobodyさん
03/03/19 15:31ID:???|. ノノソハ)))
(\リリ ´ー`)リ < サブルーチン (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"; }
0920nobodyさん
03/03/19 15:31ID:???eval の中かな?
eval はまだ取り扱ってないから、出てきたときに説明しようと思って、
こんなところで「eval」って出したら混乱する人もいそうだから、
あえて説明しなかったんだよね。。
-w とか strict は、知っておいた方がいいことだろうね。。
-w は未定だけど、 strict はそのうち勉強する予定だよ。
ふぉーいーち、だと思うよ
0921nobodyさん
03/03/19 15:31ID:???このあゆ、汗っかきだなあ
このあゆ、ワキガ??
0922nobodyさん
03/03/19 15:31ID:???〃┏━━ 、
パタパタ | ノノソハ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(((\リリ *´ー゚*リ < うぐぅ♪
((ニE/⌒ヾ∞"ヽ \____________
(こ) ∞ |こ)
く__∞,ノ
し' し'
0923nobodyさん
03/03/19 15:31ID:???| う う |
| ぐ う / ̄ ̄ ̄ ̄ ̄ ̄
| ウ | < うげぇ
\__/ \______
. r‐-i^i´`||iii》ヽ
(_| | i/二フ.〉
(__|_ゝ、__[]_ア
/ l| |
/fヨI 中|
く l| |
` ‐r-十!
ノ ! !
/ゝ,/ー|
/ /l |
/ f《 |fヨ |
. \_)_ノ
0924nobodyさん
03/03/19 15:32ID:???0925nobodyさん
03/03/19 15:32ID:???実はrequireされるライブラリファイルの中だとreturn出来るんだよ。
例えばAnyDBM_Fileがそうしてる。
ま、普通は使わない機能だけどね。
0926nobodyさん
03/03/19 15:32ID:???subroutine, eval, do FILE ... みたいですね。
ライブラリの中って言うのは、よくモジュール等の最後に 1; ってやるけど
あれって、return が省略されていたんだ?
そういえば、sub 内でも定数とかを返すだけのサブルーチンでは
return省略してるの良く見かけるよなぁ
0927nobodyさん
03/03/19 15:32ID:???ちょっと違う。
returnがない場合、最後に評価された式の結果が返される。
1; というのは式1;の値は1だから1が返る。
…って動作のはず。
0928nobodyさん
03/03/19 15:32ID:???0929nobodyさん
03/03/19 15:33ID:???0930nobodyさん
03/03/19 15:33ID:???0931nobodyさん
03/03/19 15:33ID:???睾丸無知
0932nobodyさん
03/03/19 15:33ID:???0933nobodyさん
03/03/19 15:33ID:???0934nobodyさん
03/03/19 15:33ID:???0935nobodyさん
03/03/19 15:33ID:???0936nobodyさん
03/03/19 15:33ID:???|. ノノソハ)))
(\リリ ´ー`)リ < サブルーチン (4) 引数
(ニE(#つo⊂#)
引数、っていうのは、「ひきすう」って読むらしいよ。
ボクはこのあいだまで、「いんすう」だって思ってたんだけど。。
サブルーチンから値を持って戻る、っていうことをやったね。
じゃあ次は、値を持ってサブルーチンを実行するっていうことをやるね。
&xxx("abc", "123", "あいう");
こんな風に呼び出すと、特殊配列 @_ に頭から代入されて呼び出されるよ。
当然、
@list = ("abc", "123", "あいう");
&xxx(@list);
と同義だよ。
この辺の話を覚えて、次回は、名無しさんならエラー、っていう
ソースに改造してみるよ。
#投稿が遅れてごめんね。
#遅れてもdat落ちや削除されない限り途中で放棄することはないからね。。
0937nobodyさん
03/03/19 15:34ID:???知らなかった
ちょっと恥ずかしいな
えっ
そんなにあるのっ?!
なんだかすごいね
Perl、ってクラスって言うのかな…?
呼び方とかよく知らないや。。
遅れてごめんね。
0938nobodyさん
03/03/19 15:34ID:???0939nobodyさん
03/03/19 15:34ID:???月宮あゆのPHP教室きぼんぬ
0940nobodyさん
03/03/19 15:34ID:???で、PHPの勉強にすることにしたので、
おれもPHP教室を希望します。
ちょっとづつでいいのでお願いしたいです。
0941nobodyさん
03/03/19 15:34ID:???0942nobodyさん
03/03/19 15:34ID:???でも、月宮あゆ君はよくがんばってると思うよ。
今後もがんばってもらいたいね。Perlで移行!!。
0943nobodyさん
03/03/19 15:35ID:???いや、なにか役立つでしょ。うん。
それとも先にcかphpを勉強した方が良いのか・・・?
0944nobodyさん
03/03/19 15:35ID:???Perlは勉強していきます。役には立ちますよね。
次にPHP、そしてCという順にやっていきます。がんがります。
0945nobodyさん
03/03/19 15:36ID:???でも、最終的にCするんだったら、ぼくはPHPを強く勧めるよ。
Perlから始めちゃうとPerl独自の癖がつくのでPerlしかできなくなる危険性があるので、
PHP勉強した後、Perlを勉強したほうかいいかもしれないね♪ がんがれ!
0946nobodyさん
03/03/19 15:36ID:???|. ノノソハ)))
(\リリ ´ー`)リ < エラー画面を作る
(ニE(#つo⊂#)
じゃあ、まずはソースだよ。
ttp://www.geocities.co.jp/SiliconValley-Sunnyvale/8274/perl/perl0007.txt
&error("エラーメッセージ");
としてサブルーチンを呼びだすと、
( 特殊配列 @_ の0番目の要素だから $_[0] )
エラーメッセージが $_[0] に入って参照するようになってるよ。
こういうエラーのサブルーチンはよく見かけるね。
ぜひ使えるようにしようね。
次回は、環境変数について勉強するね。
0947nobodyさん
03/03/19 15:36ID:???ボクも今、PHPは勉強してるところなんだよね
ちょっとボクにはできそうにないよ
ごめんね
確かにこれからはPHPの時代に変わっていくかもしれないね。
elsif 、とかPerl以外にみたことないよ。。
0948nobodyさん
03/03/19 15:36ID:???0949nobodyさん
03/03/19 15:36ID:???PHP では、 elseif, else if
Perl で、無理に独自のスタイルに馴染まなくても
C ライクなプログラミングも出来るよ。
0950nobodyさん
03/03/19 15:36ID:???0951nobodyさん
03/03/19 15:37ID:???あゆタン
0952nobodyさん
03/03/19 15:37ID:???IEを恨みましょう。
0953nobodyさん
03/03/19 15:37ID:???>C ライクなプログラミングも出来るよ。
独自スタイルを使わずしてPerlは動くのか?
C知らずしてCライクは無理だろ。もうちと考えてかけよ。
0954nobodyさん
03/03/19 15:37ID:???0955nobodyさん
03/03/19 15:37ID:???0956nobodyさん
03/03/19 15:37ID:???0957nobodyさん
03/03/19 15:38ID:???0958nobodyさん
03/03/19 15:38ID:???0959nobodyさん
03/03/19 15:38ID:???0960nobodyさん
03/03/19 15:38ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 環境変数 (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} : そのページへのリンク元アドレスが入ってるよ。
こんな感じかな。
次回は他の環境変数と、スペースがあまったら実用例を書いてみるね。
0961nobodyさん
03/03/19 15:38ID:???無料サーバかな?
規約違反するなら infoseek かトクトク
規約違反しないなら XREA がいいと思うな
Python なんて言語聞いたことない…
他は聞いたことあるけど。。
ボクもよくわからなかったんだけど410さんが言うにはIEの仕様みたいだね・・・
これはしかたないね
今は、あけましておめでとう、っていう時期になっちゃったね
ごめんね
見てくれてたのかな、ありがとうね
これからできるだけ顔を出したいと思ってるんだけどね
最近いそがしくて・・
0962nobodyさん
03/03/19 15:38ID:???0963nobodyさん
03/03/19 15:39ID:???0964nobodyさん
03/03/19 15:39ID:???|. ノノソハ)))
(\リリ ´ー`)リ
(ニE(#つo⊂#)
0965nobodyさん
03/03/19 15:39ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 環境変数 (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 関数も使えないサーバーもあるらしいよ。。
こんなサーバーは(たぶん)どうやってもホスト名は取得できないよ。
わからないことがあったら、サーバーの管理人さんに聞いてね。
0966nobodyさん
03/03/19 15:39ID:???ん?なに?
Janeで読んだら「ここ壊れてます」、って言われる
なんでだろう
0967nobodyさん
03/03/19 15:39ID:???0968nobodyさん
03/03/19 15:39ID:???0969nobodyさん
03/03/19 15:40ID:???0970nobodyさん
03/03/19 15:40ID:???0971nobodyさん
03/03/19 15:40ID:???おめでと〜。
関係ないけど、
このスレでの「月宮あゆ」は共有コテにして、トリップだけ別々にすればいいと思うが。
俺は「C言語CGI」スレの住民だけど、あゆのレスが面白くてこっちにもいてみたり。
0972nobodyさん
03/03/19 15:40ID:???を提唱しようではないか。と。
取りあえず次スレはWebProg総合スレにして欲しいっす。
初心者スレとかも良いかもね。
0973nobodyさん
03/03/19 15:40ID:???|. ノノソハ)))
(\リリ ´ー`)リ < 環境変数 (3)
(ニE(#つo⊂#)
じゃあ、掲示板に書きこんだ人のホストを記録するよ。
簡単に言うと、ログファイルに記録すればいいんだけど、
ログファイルにそのまま記録しちゃうと、読む人にホストが見えちゃうんだよね。
たぶんここにいる人たちはホスト開示、っていうのは嫌だと思うんだ。
コメントにする、っていうのも、ソースを見られたらばれちゃうよね。
じゃあ、こんなことをしてみよう。
書きこむときに
<a href='mailto:メール'>名前</a>>メッセージ
っていう書き方をやめるんだ。こうじゃないとホストが筒抜けになっちゃうからね。
じゃあ、ホストを記録できるようにするには、
<a href='mailto:メール'>名前</a>>メッセージ(ホスト)
みたいにして、表示するときに消してやるといいよ。
表示する欄をいじってみるね。
foreach (@log){
$_ =~ s/\([\w\.-]\)\n$//;
print "$_<hr>\n";
}
でも、このままだと穴があるよ。
行数が入らないから次回にまわすね。
0974nobodyさん
03/03/19 15:40ID:???0975nobodyさん
03/03/19 15:41ID:???できればsplitあたりを使って今回やりたかったんだけど
行数が入らないからフォーマットは次回まわしかな
0976nobodyさん
03/03/19 15:41ID:???重要な語句が抜けてますた(*´Д`)
質問に「答える人達が」共有であゆコテを使おうってことを言いたかったんだ。
「◆XalkKQX1is」あゆ一人だけだと、負担がかかるんじゃないかと思ったから。
気の回しすぎだったらごめん。
軽い気持ちで吊ってくるっす。
0977nobodyさん
03/03/19 15:41ID:???0978nobodyさん
03/03/19 15:41ID:???そっちの方が雰囲気出るかも
ただ、◆Xalk..も◆AYUAYU..も掲示板でpassを晒したら、
関係ない奴が偽物として入ってくると言う痛い罠
passの配布方法はどうするの?
0979nobodyさん
03/03/19 15:42ID:???0980nobodyさん
03/03/19 15:42ID:???0981nobodyさん
03/03/19 15:42ID:???自分ダメダメっすね(^.^;
0982nobodyさん
03/03/19 15:42ID:???いっそトリップ付けなきゃ(ry
もしくはID表示させれば(ry
0983nobodyさん
03/03/19 15:43ID:???0984nobodyさん
03/03/19 15:43ID:???0985nobodyさん
03/03/19 15:43ID:???0986nobodyさん
03/03/19 15:43ID:???0987nobodyさん
03/03/19 15:43ID:???いまどき(仕事以外で)使ってる人いるんすかねえ、、、
0988nobodyさん
03/03/19 15:43ID:???電2>基礎から丁寧に説明してくれるので非常に分かりやすい
0989nobodyさん
03/03/19 15:44ID:???降臨きぼーん
0990nobodyさん
03/03/19 15:44ID:???電2ってなによ
0991nobodyさん
03/03/19 15:44ID:???0992nobodyさん
03/03/19 15:45ID:???0993nobodyさん
03/03/19 15:45ID:???0994nobodyさん
03/03/19 15:45ID:???|. ノノソハ)))
(\リリ ´ー`)リ < ログファイル (1)
(ニE(#つo⊂#)
前回はホストの記録をやってみたわけだけど、実は拡張子が、
.cgi とかじゃないファイルは、外部から参照されちゃうことがあるんだ
(でも、基本的にサーバーの設定に依存するよ)
log.cgi か何かにリネーム(名前を変更)して、スクリプトも少し
書き直したらこの問題は解決されるね。
じゃあ今回は、少し重い掲示板を作る、っていう想定でやってみるね。
ここでは表示欄にテーブルを組ませたりするよ。
ちょっとここで考えてみると、前回までと同じように、ログファイルに
書き込んでると、容量がどんどん大きくなっちゃうよね。
それは困る、っていうことで、一般的な掲示板では、【区切り文字】を
使って、名前、とかの要素を区切って保存してるよ。
2ちゃんねるでもこれは同じだよ。
http://pc.2ch.net/php/dat/1014096840.dat
名前<>E-mail<>投稿日<>本文<>(サブジェクト)
っていう感じに <> で区切られて保存されてるのがわかると思うよ。
区切り文字は、 <> が一番メジャーで、次に , とか : とか | を見るね。
別に何でもいいんだけどね。でも、本文にその区切り文字があると、
そこで区切られちゃうから、それを避けるようにすればいいね。
じゃあ、今回は
名前<>E-mail<>投稿日<>本文<>ホスト
っていう形式でやってみることにするね。
0995nobodyさん
03/03/19 15:45ID:???ボクは別にそれでもいいけど
結構大変な仕事を継続してやってくれる人はいるかな…?
いるならボクは大歓迎だよ
トリップのキーはすぐに割れそうな気がするキーなんだけど…
えっと、他のスレでもこのトリップ使ってるから、
公開するつもりはあまりないよ、ごめんね
COBOL…?
ごめん、聞いたことないよ。。
えっ?!
今みてみたけどホントに掲載されてるね
うれしいよ、今度からも頑張るから応援してね
そんな難しいこと書いてるかなぁ…
どのへんから分からないのか教えてほしいな
遅くなってごめんね
スレ違いだよっ!
0996nobodyさん
03/03/19 15:46ID:???キタ─wwヘ√レvv~(゚∀゚)─wwヘ√レvv~─ !!!
俺はスローペースでもOK
てか、あゆあゆは一人であとは普通に教えあえばいいと思うよ。
0997nobodyさん
03/03/19 15:46ID:???0998nobodyさん
03/03/19 15:46ID:???〃┏━━
( ) ( )
(.〆⌒ヽ )
(∴゚ρ゚∴) < いないよ ( £ £ )
( £ゑ££ )
(££ゑ£)
|. ノノソハ)))
(\リリ ´ー`)リ
(ニE(#つo⊂#)
0999nobodyさん
03/03/19 15:46ID:???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:46ID:???シロウトがでたらめばかり書くな。
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。