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

月宮あゆのPerl教室 Part.4

■ このスレッドは過去ログ倉庫に格納されています
0001月宮あゆ02/02/19 14:34ID:???
      _ _
     〃┏━━ 、
パタパタ |  ノノソハ)))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (((\リリ ´ー` リ <  うぐぅ♪
  ((ニE/⌒ヾ∞"ヽ   \____________
    (こ)   ∞ |こ)
    く__∞,ノ
    し' し'
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:???
>305
cgi-lib.plって何?
マジで使ったこと無いけど、何するもんなの?
てか必要なの?
0307nobodyさん02/11/29 00:21ID:???
jcode.plやらcgi-lib.plを使うスクリプトが国際網から絶えないので、
わざわざ鯖に入れている鬱、、、
0308nobodyさん02/11/29 11:21ID:???
あゆたん、サイトがあったんだね。
今まで知らなかったよ。(うぐぅ
0309月宮あゆ ◆XalkKQX1is 02/11/29 18:18ID:???
-[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;
----------------------------------------------------------------
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
社団法人日本外交協会(外務省の外郭団体、会長/綿貫民輔衆議院議長)が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
0315一うぐぅファン ◆unyuH2NGgE 02/11/29 21:02ID:???
うは、レスが早い! なんか嬉しい(うぐっ

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


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



次回の授業を楽しみにしてます!
0316nobodyさん02/11/29 23:34ID:???
>>312
具体的にどう効率があまりよくない?
0317nobodyさん02/11/30 08:43ID:???
>>316
汎用的って事でしょう。
031830502/11/30 10:28ID:???
cgi-lib.plではなくCGI.pmを使え、という意味だったのだが。

0319nobodyさん02/11/30 17:02ID:???
CGI.pmって207k、、、。
そんなもん、コンパイルしてメモリにロードされるかとおもうと
とうてい、使う気にはなれんな。
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:???
>>315
レスが早いのは運だよ

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:???
そっか〜、ありがと
鮎タンのページの掲示板でおみくじやったら「大凶」と「最大凶」ひいちゃったよ・・・。
これも運・・・。
032430502/12/02 13:14ID:???
TMTOWTDIはまさにその通り、それはいい。
だが今人に勧めるのなら既に保守更新されていないcgi-lib.plよりも
標準モジュールとして使えるCGI.pmの方が導入は容易だと思うのだが?

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

>>319
滑稽だな。そう思うのならそもそもCGI/Perlを選択するのが間違い。
0325nobodyさん02/12/05 18:47ID:o9GMmmoX
授業まだ〜?
0326月宮あゆ ◆XalkKQX1is 02/12/05 20:43ID:???
  〃┏━━
  |. ノノソハ)))
(\リリ ´ー`)リ  < 置換演算子
 (ニE(#つo⊂#)

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

● =~ s/◆/★/g;

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

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

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

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

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

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

>>325
遅れちゃってごめんね
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:???
$test =~ tr/[0-9]/[A-J]/;
[]に意味はあるのかい?
0331nobodyさん02/12/06 10:25ID:???
>>330
$testに[]が含まれると、戻り値の置換文字数が変わってくる。
0332nobodyさん02/12/06 10:53ID:???
>>330
tr[0-9][A-B];
と書き変えておこうとして忘れてました。
スマ
0333nobodyさん02/12/06 18:41ID:???
これから先ずっと使う前に
q, qq, qw を覚えよーょ。

クォートのエスケープは他の言語でもよく使われるから、
覚えておいて損はないけど。
0334マルチ02/12/06 20:22ID:???
>pearさん
こんど♪のスクリプトも改良してほしいですぅ
0335nobodyさん02/12/06 20:50ID:???
>334
ここにも出たか、粘着リア厨が!
さっさと糞してねれ!!
削除依頼出しとけよ!
0336nobodyさん02/12/06 21:13ID:???
>335=粘着
0337nobodyさん02/12/06 21:20ID:???
>>335=尾瀬原必死だな
まああんな穴だらけのクリプト晒されりゃいい恥さらしだから無理もないか(藁
0338nobodyさん02/12/06 22:40ID:dKGf9spa
(-_-) 誰もカキコしてない・・・
(・∀・)カンリョウ!!
0339nobodyさん02/12/06 22:45ID:???
>>333
正規表現のコンストラクタ、qr//も忘れずにな
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:???
>>328
>>329さんが上手く説明してくれてるね。
ボクにはこれ以上うまく説明はできないかな

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

うぐぅタン
だんだん難しくなってきたよ・・・。
まだ何とか付いていけてるから、次もよろしく〜
0345一うぐぅファン ◆unyuH2NGgE 02/12/07 03:00ID:???
334トリップ忘れた・・・(汗
0346nobodyさん02/12/07 03:11ID:???
このすれ く さ い
0347nobodyさん02/12/07 06:32ID:???
>346
おまえが近づかないようにするためだよ。
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:???
>>343
うん、そうしてね。
わかってくれてうれしいよ

>>344
だんだん難しくなっていくね
わからないことがあったら気軽に聞いてね。
0350一うぐぅファン ◆unyuH2NGgE 02/12/08 14:06ID:???
ありがと、
とりあえず今のところ大丈夫だよ。

次は何が出てくるのか楽しみです。
0351nobodyさん02/12/08 19:24ID:Jo6i/ZZ/
cgi-lib.plを使わない>>320の簡易掲示板の作り方を教えて欲しいでつ。
0352nobodyさん02/12/08 19:53ID:???
>>348
待て、一番重要なサブルーチンの説明がよりによって引数無し、グローバル変数操作かよ。
常識的なサンプルを提示できないなら、頼むから何もしないでくれ。はっきりいって迷惑。
0353nobodyさん02/12/08 20:14ID:???
>>352
(1)って書いてるじゃねーか(2)があるんだろ
おとなしく待てよ行数規制があるんだから
0354nobodyさん02/12/08 23:42ID:???
(2)はどこじゃヴぉけぇ!!!!!
0355サブルーチン編02/12/09 00:42ID:VP9Z79ed
sub hogehoge {
 my %param = @_;

#何か

 return ...;
}
0356nobodyさん02/12/09 00:42ID:???
>>348
>これは、変数 $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:???
サブルーチン(1)
確かに、これだけじゃちょっと・・・

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

綾波レイのWEB制作管理教えますれ
http://pc3.2ch.net/test/read.cgi/hp/1023741627/l50
0360nobodyさん02/12/09 12:31ID:czPx1nV4
漏れは普段平気でグローバル変数操作してるが。
use strictなんてきらいだよー。
0361nobodyさん02/12/09 13:44ID:???
>>360 分かったから屑は死ね。
0362nobodyさん02/12/09 13:46ID:???
>>360
movep.l d0-d7/a0-a7,-(a7)
が癖になっていたので、もはや戻れません。>グローバル変数いぢり
0363nobodyさん02/12/10 21:21ID:???
月宮あゆのPHP教室もキボン!。
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:???
>>351
もうすこし先で勉強するからもうちょっとまってね。

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

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

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

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

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

>>366
同じ意味だと思うよ。
036836602/12/11 22:40ID:???
>>367
ありがと。戻り値でも通じるんだよね?
よかった、前から気になっていたんだ。
0369nobodyさん02/12/11 23:34ID:M9dNCh9D
use strict;無しで書くほうが、後から面倒なことになる。げぼ。
0370nobodyさん02/12/12 08:30ID:???
くさい
0371nobodyさん02/12/12 10:53ID:SmMSqgPF
すいません、教えて下さい
foreach
これってフォーイーチ?
フォーリーチですか?
気になって仕方ないです…
お願いします。
0372 ◆hMJAPH9PWA 02/12/12 11:22ID:???
>>371
for eachだから、そのように。
0373nobodyさん02/12/12 12:12ID:???
f or each
037437102/12/12 12:18ID:SmMSqgPF
>>373
それはあんまりです(笑
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:???
>>366
うん、同じだね

>>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:???
ヴ?
0381 ◆hMJAPH9PWA 02/12/13 00:24ID:???
>>376
そういえばevalもそうだっけ。でもそれ以外にもあるよ。
実はrequireされるライブラリファイルの中だとreturn出来るんだよ。
例えばAnyDBM_Fileがそうしてる。
ま、普通は使わない機能だけどね。
0382nobodyさん02/12/13 02:31ID:???
perldoc -f return
subroutine, eval, do FILE ... みたいですね。
ライブラリの中って言うのは、よくモジュール等の最後に 1; ってやるけど
あれって、return が省略されていたんだ?

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

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

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

0385nobodyさん02/12/13 14:56ID:TqDERRP1
Perlのクラスは何であんなにヘンテコですか?
0386nobodyさん02/12/13 15:12ID:???
あんなにってどんなに?
0387nobodyさん02/12/13 15:46ID:???
↑
睾丸無知
0388nobodyさん02/12/14 19:45ID:???
>>386は睾丸ですか?
0389nobodyさん02/12/16 01:42ID:/+dGpF86
あゆタンはやく続きおせーて
0390しぼーん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:???
>>381
そうなんだ‥
知らなかった
ちょっと恥ずかしいな

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

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

>>389-391
遅れてごめんね。
0394 ◆soCKet026k 02/12/21 01:51ID:cbygjUhv
キタキタキター
0395Perlは時代遅れ02/12/21 18:38ID:???



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


0396nobodyさん02/12/21 18:58ID:???
このスレほんと勉強になりました。
で、PHPの勉強にすることにしたので、
おれもPHP教室を希望します。
ちょっとづつでいいのでお願いしたいです。
0397nobodyさん02/12/21 19:50ID:???
いまさらPerl勉強しても需要も無い仕事無い
0398nobodyさん02/12/21 20:29ID:???
>>397
確かに今さらPerlっつってもね。
でも、月宮あゆ君はよくがんばってると思うよ。
今後もがんばってもらいたいね。Perlで移行!!。
0399nobodyさん02/12/23 03:38ID:1Wxw8/wH
perl今勉強中なんだが需要無いのか・・・
いや、なにか役立つでしょ。うん。

それとも先にcかphpを勉強した方が良いのか・・・?
0400nobodyさん02/12/23 04:21ID:???
>>399
趣味にやってるぶんには頭の体操になるしPerlでも良いと思うよ。
Cは用途が違うし難易度が高いから、始めるならPHPのほうが良いと思うよ。
がんばろっ♪
0401nobodyさん02/12/23 20:45ID:???
>399
使い捨てスクリプト書くのとかにはPerlはすごく便利だよ。
CとPerlは構文が似てるし、Perlをやっても全くCに役立たない、という訳でもなし。
■ このスレッドは過去ログ倉庫に格納されています