マジ眠い

最近は眠くてしょうがない。
ちゅうか、家でやらなあかんことがあって寝るのが遅めなんで、
尚更眠くなりやすいわけ。

Windows上でソースコードをいぢりたい時、エディタは何を使おうかという話になる。
昔から有名なのは秀丸。超多機能で、カスタマイズもかなり自由。
俺は何年もTeraPad。フリーなのがいい。でも正規表現が使えないし、機能は少ない。

だから、EmEditorにしようかなと、最近思い始めた。
EmEditorはTeraPadよりは多機能な無料版がある。
乗り換えた感想をそのうち書くよ。

             -‐ ‘´ ̄ ̄`ヽ、
             / /” `ヽ ヽ  ?
         //, ‘/     ヽハ  、 ヽ
         〃 {_{       リ| l.│ i|  に
         レ!小lノ    `ヽ 从 |、i|  ょ
          ヽ|l ●   ●  | .|ノ│  ろ
            |ヘ⊃ 、_,、_,⊂⊃j  | , |.  l
          | /⌒l,、 __, イァト |/ |  ん
.          | /  /::|三/:://  ヽ |
          | |  l ヾ∨:::/ ヒ::::彡, |

Perlで独特な部分を覚え書き。

・変数の型は次の三種類(コンテキスト)
 $-スカラー(文字列や数字)。
 @-配列。
 %-連想配列(ハッシュ)。
 俺の勝手な想像では、$は値で@と%はそれぞれの意味を持つポインタ。
 Perlでは、リテラルコンテキストは通常、演算子の期待で評価される。
 ただ$a = 1;とした場合、文字列だったり数値だったりする。
 $a+$a=2で、$a.$a=’11’となる。(+は数値リテラルの演算子で、.は文字リテラル演算子)
 しかし$a = ‘1’;にすると文字列固定にする(数値として扱うと文字コードが出る)ことも可能。

 Perlでは、引数を省略できる命令が大量にある。
 その場合は自動的に$_とか@_とか%_とかの名無し変数が使用される。
 これらの変数は元々存在し、何かと勝手に使われる。
 例えば、chop($_);をchop;と書いてしまえる。

・変数の局所性
 Perlでは普通に変数を使用すると、グローバルになる。
 my();を利用して、使用するスコープを固定してしまうほうが
 他言語使いには分かりやすくバグも少ない。
 尚、サブルーチンを作ったらリファレンスを多用することで対処。

・変数のポインタ(リファレンスという)
 変数の前に\をつける。
 \$aとすると、$aの参照ポインタ(リファレンス)。
 \@bとか\%cとか。←たぶんこいつらはCでいう二重ポインタ。
 オブジェクト指向的な構造にする場合リファレンスを用いたほうが良い気がする。
 よくわからんが

 %hash = {‘name’=>’にゃあ’};
 $name = a(\%hash);

 sub a(\%)
 {
  my($ref) = @_;
  return $ref->{‘name’};
 }
 みたいなマネができる。この場合、$refは@_[0]が代入される(つまり\%hash)。
 複数の要素をそれぞれの変数に代入するときは($a,$b,$c) = @hogeみたいに書ける。
 $a = @hoge[0];
 $b = @hoge[1];
 $c = @hoge[2];
 と同義。
 $a = shift @hoge;
 $b = shift @hoge;
 $c = shift @hoge;
 でもよく、shiftの後に配列変数を省略すると@_が適用されるので、サブルーチンの引数に便利。

・関数
 サブルーチンという。
 sub ルーチン名 (引数の型) { }
 呼び出し時は &ルーチン名;
 サブルーチンは引数を取ることができる。
 引数は、名無し変数@_に順次格納されるためそれを利用する。
 配列や連想配列を引数に取るときはリファレンスで渡す。

・モジュールやライブラリの利用
 packageという命令で包まれている。
 $パッケージ名::変数名
 &パッケージ名::サブルーチン名
 みたいな感じで使う。
 読み込んでメモリに展開したパッケージを引きずり出すイメージ。