月宮あゆの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:???0706nobodyさん
03/03/19 14:55ID:???一般の会社の流通コストの部分を参加者に還元をすることにより成り立つ
ネットワークビジネスは、何人かの識者が本などで発言しているのを読ん
でみると、人間的かつ将来有効なシステムだと感じます。
実際、有名な大会社でも参入しています。
コンサルタント、マーケティングのプロの中のプロである船井幸雄氏も、
ネットワークビジネスとそれに携わる個人にすばらしい可能性を見出して
います。 興味のある人には、ぜひ参加して一緒にやってみましょう。
以下のホームページでの説明も御覧ください。
http://ailove22.fc2web.com/lpd/index.html
[email protected]
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:???頑張るよ
ずっと読んでくれてるの?
なんだか嬉しいな
別に気にしなくていいよ
…みんなはこのへんちゃんと理解してくれてるのかな?
わかりにくいところがあったら言ってね。
説明しなおすからね。
■ このスレッドは過去ログ倉庫に格納されています