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 }
とかとか。
他の言語使いが見たら、混乱しそうだが…