読者です 読者をやめる 読者になる 読者になる

NeverBlog::Likk::Unexistable;

見なかったことにして下さい

Perl小技1(配列)

暫く止まってたので書いてみる。


ある程度のPerl慣れしている人なら
@配列に、連続したデータを入れる時
@a_f = ('A','B','C','D','E','F',);
とはやらずに、
@a_f = ('A'..'F');
とやるだろう。
こういった小技が使えるのが便利
コレをちょっと深く掘ってみる

@alph = ('A'..'Z'); #A~Zの配列が作成されます
@num = (0..9); #0~9の配列が作成されます

二桁もOK
@num2 = (0..99); #0~99の配列が作成されます
@alph2 = ('AA'..'ZZ'); #AA~ZZの配列が作成されます
この場合 AAからスタートしてAZ、BA〜BZ、CZ~ZZという感じで
インクリメントされる。

@a_to_perl = ('A'..'PERL'); #A~PERLの配列が作成されます
こんなアフォみたいなことも可。


アルファベットと数字の組み合わせもOK
@ss1_to_ss9 = ('SS1'..'SS9'); #SS1,SS2...SS9の配列が作成されます
でも逆は不可
@1a_to_1z = ('1A'..'1Z'); #NG(1Aだけしか作成されない)

それから、二桁は摩訶不思議
@SS1_to_SS99 = ('SS1'..'SS99'); #NG

この場合以下な感じの配列が作成されます。
SS1..SS9,ST0..ST9,SU0...SZ9,TA0...TZ9,UZ0....ZZ9,AAA0.....ZZZ9
という感じ、

一歩間違えると無限ループに近い状態に陥るので要注意
(丸一日かけてリストが作成されるとか…)

あと、配列処理で

@alph('A'..'Z');
foreach(0..#$alph){ hogehoge }

みたいな処理がありますが、
@alph('A'..'Z');を使うのが、スクリプト全体でその一箇所であれば
配列に突っ込めるものはforeachにも突っ込めます

foreach('A'..'Z'){ hogehoge }
こんな感じで。

髪の毛一個分ぐらい処理が軽くなるかもしれない。

連番ではなくても

@list = ('起','承','転','結');
foreach(0..#$list){ hogehoge }

と言うところを

foreach('起','承','転','結'){ hogehoge }
とすることも可能です。

因みに、foreach文でできる事はfor文でもできます

for('起','承','転','結'){ hogehoge }
とかとか。

他の言語使いが見たら、混乱しそうだが…