<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/perlref/">
    <title>いまさらPerlリファレンス</title>
    <link>http://w.atwiki.jp/perlref/</link>
    <atom:link href="https://w.atwiki.jp/perlref/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>いまさらPerlリファレンス</description>

    <dc:language>ja</dc:language>
    <dc:date>2007-12-22T03:33:02+09:00</dc:date>
    <utime>1198261982</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/perlref/pages/101.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/perlref/pages/100.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/perlref/pages/99.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/perlref/pages/98.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/perlref/pages/97.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/perlref/pages/96.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/perlref/pages/95.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/perlref/pages/94.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/perlref/pages/93.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/perlref/pages/92.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/perlref/pages/101.html">
    <title>オブジェクト指向</title>
    <link>https://w.atwiki.jp/perlref/pages/101.html</link>
    <description>
      *オブジェクト指向

【用語】

【説明】
-プログラムの書き方の一つ(とか言って、コレ一つしか紹介しない)。
-プログラムを、実体のある一つの物体としてプログラミングする考え。
-色々なたとえがあります(車だったり、たい焼きだったり)が、人間で例えたほうが一番わかりやすい(物ではありませんが)。
-基本的な型だけを作り、後で継承して使うのが一般的な書籍の説明。
-コレについては、Javaを勉強したほうが速そうだけど、JavaとPerlでは書き方が全く違うといっても過言ではないです。

【解説】
-以下は、使う言語がPerlであることを前提です。
-一つの物体の定義をクラスと言い、[[package]]で定義します。
-そのクラスの中で定義された[[変数]]を、メンバ変数やフィールドといったりします。
-そのクラスの中で定義された[[関数]]を、メンバ関数やメソッドといったりします。
-そのクラスの中で定義された、最初に呼び出すべき関数(大体は[[new]])を、コンストラクタと言います。
-クラスの定義は、あくまで定義しただけです。実際に使う場合は、その定義された物体の実体を作らなければなりません。その実体を作ることを、インスタンス化と呼びます。
-基本的には、そのクラスの中で定義された変数(フィールド)に直接に値を代入してはいけませんし、値を呼び出したりすることもいけません。
-基本的には、以下のような書き方。

 [[package]] TestObject;
 
 [[sub]] new {
         my $self = shift;
         my @args = @_;
 
         bless {
         }, $self;
 
         [[return]];
 }
 
 -------------------------------------
 # インスタンス化
 my $inst = new TestObject();

-以上、わかりづらい解説でした。
-習うより慣れろです。

【関連事項】
-[[サブルーチン]]
-[[連想配列]]
-[[package]]
-[[bless]]
-[[new]]    </description>
    <dc:date>2007-12-22T03:33:02+09:00</dc:date>
    <utime>1198261982</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/perlref/pages/100.html">
    <title>名前空間</title>
    <link>https://w.atwiki.jp/perlref/pages/100.html</link>
    <description>
      *名前空間

【用語】

【説明】
-[[変数]]や[[関数]]がそれぞれ独自に持つ、それぞれの名前とは別の大きなまとまりの名前。
-わかりやすく言えば、人間の名前で言う苗字に値する。
-ありがたみは、[[ライブラリ]]や[[モジュール]]を作るようになって初めてわかるような気がする。
-Perlでは、省略時は「main」となる。

【関連事項】
-[[package]]
-[[オブジェクト指向]]
-[[ライブラリ]]
-[[モジュール]]    </description>
    <dc:date>2007-12-22T03:09:02+09:00</dc:date>
    <utime>1198260542</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/perlref/pages/99.html">
    <title>サブルーチン</title>
    <link>https://w.atwiki.jp/perlref/pages/99.html</link>
    <description>
      *サブルーチン

【用語】

【説明】
-一つ、またはいくつかの処理を一つにまとめ、何かしら値を返す一つのまとまり。
-わかりやすく言えば、携帯電話みたいなもの。
-同じような処理を一つにまとめ、定義したサブルーチン名で呼べば、同じ処理をしてくれるもの。
-ユーザーが自由に定義できるため、別名「ユーザー定義関数」とも呼ばれる。
-Perlで[[オブジェクト指向]]する場合、サブルーチンではなく[[メソッド]]と呼ばれる。
-特殊なサブルーチンとして、[[オートロード]]や[[無名サブルーチン]]などがあるが、それについては各項参照。

【関連事項】
-[[sub]]
-[[オートロード]]
-[[無名サブルーチン]]
-[[メソッド]]
-[[オブジェクト指向]]    </description>
    <dc:date>2007-12-22T03:09:27+09:00</dc:date>
    <utime>1198260567</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/perlref/pages/98.html">
    <title>package</title>
    <link>https://w.atwiki.jp/perlref/pages/98.html</link>
    <description>
      *package

【宣言】
**package [[STRING]]

【読み方】
+ぱっけーじ

【説明】
-[[package]]で指定した行以降を、次の[[package]]宣言が出てくる行またはそのファイルの最後までが[[STRING]]の[[名前空間]]を持つようになります。
-↑は複雑なことを行っているように見えますが、簡単に、機能的に言えば、同じ名前が使えるということです。
-[[package]]宣言をしないと、自動的に[[名前空間]]はmainになります。普段は省略されていてわかりませんが、その中で宣言された変数(ここでは)variableは、正式には[ $main::variable ]]となります。[[名前空間]]をsubにすると、それ以降に宣言されたvariable(先ほどと同じ名前)は、[ $sub::variable ]となり、表面上(省略時)は同じに見えて、正確にはまったく違う変数になります。
-主に、ライブラリやモジュール、[[オブジェクト指向]]チックなプログラムを組むときに使用することが多いです。


【関連事項】
-[[bless]]    </description>
    <dc:date>2007-09-25T19:38:53+09:00</dc:date>
    <utime>1190716733</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/perlref/pages/97.html">
    <title>PROTOTYPE</title>
    <link>https://w.atwiki.jp/perlref/pages/97.html</link>
    <description>
      *PROTOTYPE

【宣言】
**【説明】参照。

【読み方】
-ぷろとたいぷ

【説明】
-[[サブルーチン]]の引数を指定する。
-[[$]]　…　[[スカラー変数]]一つ分。
-[[@]]　…　配列一つ分。
-[[%]]　…　上と似たようなもの(おそらく、[[連想配列]])。
-[[;]]　…　;(セミコロン)以降は省略可能な引数。

【関連事項】
なし    </description>
    <dc:date>2007-09-25T19:40:03+09:00</dc:date>
    <utime>1190716803</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/perlref/pages/96.html">
    <title>NULL</title>
    <link>https://w.atwiki.jp/perlref/pages/96.html</link>
    <description>
      *NULL

【型】
**なし

【読み方】
+ぬる
+なる

【説明】
-何もないということ。
-[[C]]ユーザーはとてもお世話になっているもの。
-ちなみに、読み方は「なる」のほうが英語読みに近い。

【関連事項】
なし    </description>
    <dc:date>2007-09-25T18:23:33+09:00</dc:date>
    <utime>1190712213</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/perlref/pages/95.html">
    <title>sub</title>
    <link>https://w.atwiki.jp/perlref/pages/95.html</link>
    <description>
      *sub

【演算子】
**1.  sub ROUTINE_NAME [([[PROTOTYPE]])];
**2.  sub ROUTINE_NAME [([[PROTOTYPE]])] { ... }

【読み方】
+さぶ

【説明】
-[[ユーザー定義関数&gt;サブルーチン]]([[サブルーチン]])を定義することが出来ます。
-[[サブルーチン]]については、[[サブルーチン]]参照。
-1.は、前方宣言と言い、[[サブルーチン]]名と引数のタイプ([[PROTOTYPE]])を宣言するだけです。
-2.は、宣言と定義をしています。{ ... }内に、実行時の動作を書きます。
-[[PROTOTYPE]]は省略できます。
-[[パッケージ]]([[package]])や[[bless]]、無名[[ハッシュ&gt;連想配列]]を利用すれば、[[オブジェクト指向]]チックなことが出来ます。
-[[PROTOTYPE]]だけを省略し、()を付けた名前で[[サブルーチン]]を宣言した場合、{ ... }内に値(数値や文字列)を入れると、[[定数]]として扱うことが出来ます。

【関連事項】
-[[my]]
-[[local]]
-[[our]]
-[[wantarray]]
-[[caller]]
-[[return]]    </description>
    <dc:date>2007-09-25T18:19:52+09:00</dc:date>
    <utime>1190711992</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/perlref/pages/94.html">
    <title>return</title>
    <link>https://w.atwiki.jp/perlref/pages/94.html</link>
    <description>
      *return

【関数】
**[[NULL]] = return(ALL);

【読み方】
+りたーん

【説明】
-[[ユーザー定義関数&gt;サブルーチン]]([[サブルーチン]])で定義されたブロックから、その関数が呼ばれた場所に戻るための関数です。
-[[Perl]]では書かなくても、ちゃんと呼び出しもとに戻りますし、返り値も勝手に最後の行の式を返す様になっています。
-明示的かつ特定の数値または文字列を返す場合に使用できます。
-基本的に、ALLに指定できる返り値になる値は一つだけですが、[[リファレンス&gt;参照]]([[参照]])を使えば、配列の[[参照]]を返すことで複数の値を返すことが出来ます。

【関連事項】
-[[sub]]
-[[ref]]    </description>
    <dc:date>2007-09-25T18:15:52+09:00</dc:date>
    <utime>1190711752</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/perlref/pages/93.html">
    <title>close</title>
    <link>https://w.atwiki.jp/perlref/pages/93.html</link>
    <description>
      *close

【関数】
**[[NULL]] = close([[FILEHANDLE]]);

【読み方】
+くろーず

【説明】
-[[open]]関数で開いたファイルの[[ファイルハンドル]]を閉じます。
-[[ファイルハンドル]]が被らないためにも一応念のため呼んだほうがいいかもしれません。
-実際には、閉じずに終了しても、終了時に自動的に閉じるので、あまり必要無い気もしますが…
-返り値は返しません。

【関連事項】
-[[open]]    </description>
    <dc:date>2007-09-25T17:54:03+09:00</dc:date>
    <utime>1190710443</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/perlref/pages/92.html">
    <title>open</title>
    <link>https://w.atwiki.jp/perlref/pages/92.html</link>
    <description>
      *open

【関数】
**[[BOOLEAN]] = open([[FILEHANDLE]], [[STRING]]);

【読み方】
+おーぷん

【説明】
-[[STRING]]は、オープンモード(省略可)とファイル名を合わせたもので、そのファイル名をカレントディレクトリからの相対パスで探し、[[FILEHANDLE]]で指定した変数でファイルを扱えるようにします。
-オープンモード
|モード|書式|
|読み込みのみ|&lt;(または省略)file_name|
|読み書き|&gt;file_name|
|追加読み書き|&gt;&gt;file_name|
-他にもありますが、あまり使用しない書き方なので省略。

-ファイル名は、カレントディレクトリからの相対パスですので、ひとつ上のディレクトリのファイルを開きたいのであれば、[../file_name]とすれば開けます。
-書き込みモードで開いた場合、[[print]]文の括弧の前の[[FILEHANDLE]]に開いた[[ファイルハンドル]]を指定してやれば、引数をそのファイルに書き込みます。
-どこかのサイトで見かけましたが、引数をそのまま[[C]]の関数に渡しているらしいので、ファイル名に[[NULL]]文字を含むと、その先の文字列が読めずに開けなくなります。
-返り値の[[BOOLEAN]]は、成功時は1、失敗時は[[未定義値]]を返されます。

【用例】
 open(FH, &quot;file.txt&quot;);        # 読み込み
 open(FH, &quot;&lt;../file.txt&quot;);    # 上と同じ。一つ上のディレクトリのfile.txtを開く
 open(FH, &quot;&gt;file.txt&quot;);       # 読み書き
 open(FH, &quot;&gt;&gt;file.txt&quot;);      # 追加書き込み

【関連事項】
-[[print]]
-[[printf]]
-[[FILEHANDLE]]
-[[close]]
-[[eof]]
-[[flock]]
-[[seek]]
-[[read]]
-[[write]]
-[[stat]]
-[[sysopen]]
-[[sysread]]
-[[syswrite]]
-[[sysseek]]
-[[te    </description>
    <dc:date>2007-09-25T17:32:03+09:00</dc:date>
    <utime>1190709123</utime>
  </item>
  </rdf:RDF>
