Perl_memo2


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

Perlメモ2


shift関数、引数の配列から先頭の値を取り出す。
@hoge=(1,2,3,4,5,6);
print shift@hoge;#1
print shift@hoge;#2
print shift@hoge;#3
print shift@hoge;#4
print shift@hoge;#5
print shift@hoge;#6

@hogeの中はガリガリ削られていく。

x演算子

これは使わない手は無い。文字列を繰り返す。
print 'a'x8;
これで
aaaaaaaa
と出力。
ということは
eval'print"hgoe";'x8;
は、
hogehogehogehogehogehogehogehoge
ということになる。これは・・・(笑)
ちゃんとfor使ってまわした方が身のためな気も。
ちなみに""だと、""内部にある$iとかの中身を置換しちゃうので、
subとかで定義した関数なんかを動かせない。

リスト

配列に値を代入する時に利用する()で括った形式がリスト。
リスト中の,と=>は同じ意味。
(10,21,32,21)
(10=>21=>32=>21)
は一緒。

ハッシュにリストで代入した場合、奇数番目項がキーに、偶数番目項が値になる。
奇数項目(n項)のリストをハッシュにした場合は?
もちろんn項のキーはあるが、値がない状態になる。

map演算子

@new=map{$_+1}@data;
mapはリストとして評価されるので、ハッシュや配列へ代入することが可能。
map内の記述を,で行うと、1つの$_につき複数の項を作ることができる。
@new=map{$_,$_+1,$_+2}@data;
こんな感じ。

$!変数

システムの要求が失敗した場合にメッセージが格納される。
die関数と一緒に使われる事が多い。
エラーが起こった場合、Error用のモジュールを引っ張ってきて、
それ用の関数を見つけて、exitに0以外の引数を渡す…なんてことをしなくても、
err発生通知を表す箇所に
die$!;
と書けばいい。

if式修飾子

print "$s is positive.\n" if $s > 0;
英語はやりたいことを主張してから、
条件を後付けするような脳みそでしゃべるとなかなかうまくしゃべることができますが、
そんな文みたいですね。
whileでも同様の事ができる。

$n=0,print" ",($n+=2)while$s<10;

ほか、until,unless,foreachも。
mapは演算子だけどforeachは式修飾子。

課題

  • localとmyの違いが分からん…。
  • コードで頻出するorについて
  • s演算子について
  • 他もろもろ。

やればやるほどなんでこんな魔術みたいな言語がシェアを獲得してるか不思議になるんですが…。
続きますその2