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

月宮あゆのPerl教室 Part.4

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001月宮あゆ02/02/19 14:34ID:???
      _ _
     〃┏━━ 、
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ ´ー` リ <  うぐぅ♪
  ((ニE/⌒ヾ∞"ヽ   \____________
    (こ)   ∞ |こ)
    く__∞,ノ
    し' し'
0850nobodyさん03/03/19 15:20ID:???
…よかった。荒らしを気にしてもう来てくれなくなるかと思った。
気に入らなければ放置してくれれば良いだけなのに…。
0851nobodyさん03/03/19 15:20ID:???
なるほど
こんな輩がいるからいつまでたってもcgi-lib.plを使う香具師が絶えないんだな
0852nobodyさん03/03/19 15:20ID:???
cgi-lib.plって何?
マジで使ったこと無いけど、何するもんなの?
てか必要なの?
0853nobodyさん03/03/19 15:20ID:???
jcode.plやらcgi-lib.plを使うスクリプトが国際網から絶えないので、
わざわざ鯖に入れている鬱、、、
0854nobodyさん03/03/19 15:21ID:???
あゆたん、サイトがあったんだね。
今まで知らなかったよ。(うぐぅ
0855nobodyさん03/03/19 15:21ID:???
-[perl0005.cgi]-------------------------------------------------
#!/usr/bin/perl/
# 簡易掲示板

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

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

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

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

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

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

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

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

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

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

社団法人日本外交協会
〒106-0041東京都港区麻布台3-1-2飯倉セントラルビル4F
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:???
cgi-lib.plではなくCGI.pmを使え、という意味だったのだが。

0865nobodyさん03/03/19 15:22ID:???
CGI.pmって207k、、、。
そんなもん、コンパイルしてメモリにロードされるかとおもうと
とうてい、使う気にはなれんな。
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:???
TMTOWTDIはまさにその通り、それはいい。
だが今人に勧めるのなら既に保守更新されていない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:???
$test =~ tr/[0-9]/[A-J]/;
[]に意味はあるのかい?
0877nobodyさん03/03/19 15:24ID:???
$testに[]が含まれると、戻り値の置換文字数が変わってくる。
0878nobodyさん03/03/19 15:24ID:???
tr[0-9][A-B];
と書き変えておこうとして忘れてました。
スマ
0879nobodyさん03/03/19 15:25ID:???
これから先ずっと使う前に
q, qq, qw を覚えよーょ。

クォートのエスケープは他の言語でもよく使われるから、
覚えておいて損はないけど。
0880nobodyさん03/03/19 15:25ID:???
>pearさん
こんど♪のスクリプトも改良してほしいですぅ
0881nobodyさん03/03/19 15:25ID:???
ここにも出たか、粘着リア厨が!
さっさと糞してねれ!!
削除依頼出しとけよ!
0882nobodyさん03/03/19 15:25ID:???
=粘着
0883nobodyさん03/03/19 15:25ID:???
>>335=尾瀬原必死だな
まああんな穴だらけのクリプト晒されりゃいい恥さらしだから無理もないか(藁
0884nobodyさん03/03/19 15:25ID:???
正規表現のコンストラクタ、qr//も忘れずにな
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:???
>342
ごめんなさいです。。。
用なし逝って話しますですぅ
0889nobodyさん03/03/19 15:26ID:???
さん
ありがと、そっか〜つまり抜けてる部分とか余ったりするとよくないっぽいんだね。
一つずつってのがポイントみたい。
これでtrは解ったよ、ホントありがと。

うぐぅタン
だんだん難しくなってきたよ・・・。
まだ何とか付いていけてるから、次もよろしく〜
0890nobodyさん03/03/19 15:26ID:???
334トリップ忘れた・・・(汗
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:???
cgi-lib.plを使わないの簡易掲示板の作り方を教えて欲しいでつ。
0897nobodyさん03/03/19 15:27ID:???
待て、一番重要なサブルーチンの説明がよりによって引数無し、グローバル変数操作かよ。
常識的なサンプルを提示できないなら、頼むから何もしないでくれ。はっきりいって迷惑。
0898nobodyさん03/03/19 15:27ID:???
(1)って書いてるじゃねーか(2)があるんだろ
おとなしく待てよ行数規制があるんだから
0899nobodyさん03/03/19 15:28ID:???
(2)はどこじゃヴぉけぇ!!!!!
0900nobodyさん03/03/19 15:28ID:???
sub hogehoge {
 my %param = @_;

#何か

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

( ´,_ゝ`) プッ $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:???
サブルーチン(1)
確かに、これだけじゃちょっと・・・

変数のスコープとか、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:???
月宮あゆのPHP教室もキボン!。
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:???
重箱の隅をつつくようだけど、実はサブルーチンの外でもreturnを使えるケースがあるんだよね。
標準ライブラリの中にもその使い方をしているものもあるよ。

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

同じ意味だと思うよ。
0912nobodyさん03/03/19 15:30ID:???
ありがと。戻り値でも通じるんだよね?
よかった、前から気になっていたんだ。
0913nobodyさん03/03/19 15:30ID:???
use strict;無しで書くほうが、後から面倒なことになる。げぼ。
0914nobodyさん03/03/19 15:30ID:???
くさい
0915nobodyさん03/03/19 15:30ID:???
すいません、教えて下さい
foreach
これってフォーイーチ?
フォーリーチですか?
気になって仕方ないです…
お願いします。
0916nobodyさん03/03/19 15:30ID:???
for eachだから、そのように。
0917nobodyさん03/03/19 15:31ID:???
f or each
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:???
そういえばevalもそうだっけ。でもそれ以外にもあるよ。
実はrequireされるライブラリファイルの中だとreturn出来るんだよ。
例えばAnyDBM_Fileがそうしてる。
ま、普通は使わない機能だけどね。
0926nobodyさん03/03/19 15:32ID:???
perldoc -f return
subroutine, eval, do FILE ... みたいですね。
ライブラリの中って言うのは、よくモジュール等の最後に 1; ってやるけど
あれって、return が省略されていたんだ?

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

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

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

0929nobodyさん03/03/19 15:33ID:???
Perlのクラスは何であんなにヘンテコですか?
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:???
いまさらPerl勉強しても需要も無い仕事無い
0942nobodyさん03/03/19 15:34ID:???
確かに今さらPerlっつってもね。
でも、月宮あゆ君はよくがんばってると思うよ。
今後もがんばってもらいたいね。Perlで移行!!。
0943nobodyさん03/03/19 15:35ID:???
perl今勉強中なんだが需要無いのか・・・
いや、なにか役立つでしょ。うん。

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

次にPHP、そしてCという順にやっていきます。がんがります。
0945nobodyさん03/03/19 15:36ID:???
Perlは今後、使用者は減るけど使えないわけじゃないから勉強してもいいと思うよ。
でも、最終的に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:???
俺の鯖、CGI使えんのだが…お奨めはあるかね。
0949nobodyさん03/03/19 15:36ID:???
Python だと elif
PHP では、 elseif, else if
Perl で、無理に独自のスタイルに馴染まなくても
C ライクなプログラミングも出来るよ。
0950nobodyさん03/03/19 15:36ID:???
ソースのHTMLが解釈されて見にくいぽ。。。
レス数が950を超えています。1000を超えると書き込みができなくなります。