トップページ⇒php
1001コメント377KB

月宮あゆのPerl教室 Part.4

■ このスレッドは過去ログ倉庫に格納されています
0001月宮あゆ02/02/19 14:34ID:???
      _ _
     〃┏━━ 、
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ ´ー` リ <  うぐぅ♪
  ((ニE/⌒ヾ∞"ヽ   \____________
    (こ)   ∞ |こ)
    く__∞,ノ
    し' し'
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:???
http://ex.2ch.net/test/read.cgi/entrance/1024924027/91
0706nobodyさん03/03/19 14:55ID:???
ネットの好きな人私たちと、ビジネスを!!!!
一般の会社の流通コストの部分を参加者に還元をすることにより成り立つ
ネットワークビジネスは、何人かの識者が本などで発言しているのを読ん
でみると、人間的かつ将来有効なシステムだと感じます。
実際、有名な大会社でも参入しています。
コンサルタント、マーケティングのプロの中のプロである船井幸雄氏も、
ネットワークビジネスとそれに携わる個人にすばらしい可能性を見出して
います。 興味のある人には、ぜひ参加して一緒にやってみましょう。
以下のホームページでの説明も御覧ください。
http://ailove22.fc2web.com/lpd/index.html
[email protected]


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

or

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

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

$password = "";

until(length $password == 8){
    $password .= $letters[rand ($#letters + 1)];
}
0723nobodyさん03/03/19 14:58ID:???
$password .= $letters[int(rand ($#letters + 1))];
0724nobodyさん03/03/19 14:59ID:???
psdfps
0725nobodyさん03/03/19 14:59ID:???
test
0726nobodyさん03/03/19 14:59ID:???
testestestestest
0727nobodyさん03/03/19 14:59ID:???
testing....
0728nobodyさん03/03/19 15:00ID:???
sexing
0729nobodyさん03/03/19 15:00ID:???
homosexual
0730nobodyさん03/03/19 15:00ID:???
SEX
0731nobodyさん03/03/19 15:00ID:???
sex-siyo-yo
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:???
のAAのがいいね。
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:???
漏れはContent-type: text/html\r\n\r\nって感じでセミコロン書いてないが、別に問題無いかな?
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:???
200だね
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:???
index で'<>'をサーチ位置指定でやって、substr で部分取り出し
0765nobodyさん03/03/19 15:06ID:???
どうもありがとうございました。
0766nobodyさん03/03/19 15:06ID:???
#!/usr/local/bin/perl

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

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

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

exit;

こうかね。
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:???
#!/usr/local/bin/perl

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

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

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

$mon ++;
$year += 1900;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

exit;
0780nobodyさん03/03/19 15:09ID:???
perlのパスは俺の場合/usr/bin/perlなんだよ・・・。
エスケープ忘れてたし・・・。
でも""の中で()は一応エスケープされてると思うんだけど。
ちゃんと実行して検証しているし。
やっぱエスケープは礼儀ということか・・・。
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:???
ついでですが…保存予定ですので宜しくお願いします。m(_ _)m
0798nobodyさん03/03/19 15:12ID:???
ごめんなさい…ageてしまった…
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:???
うん、ありがとう
頑張るよ

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

別に気にしなくていいよ


…みんなはこのへんちゃんと理解してくれてるのかな?
わかりにくいところがあったら言ってね。
説明しなおすからね。
■ このスレッドは過去ログ倉庫に格納されています