🍃このブログは移転しました。
3秒後、自動的に移動します・・・。

JavaScriptに慣れた頭で初めてPerlを勉強すると Part.2

引き続き。

例によって見てるのはこの本なので基本記法くらいしか書かないかも。

参考:O'Reilly Japan - 初めてのPerl 第6版

さぶるーちん・・?あぁ、関数のことね!

特殊変数ってなんぞ

sub average {
  my @args = @_; # 引数は@_で取れる
  my $total = 0;
  foreach(@args){
    $total += $_; # ループ内のそれ
  }

  return $total / scalar(@args);
};

デフォルト変数_(アンダースコア)は、引数なしで関数実行したりすると勝手にコレを指定したことになる・・と。

配列.length

my @arr = qw/1 2 3 4 5/;

my $length1 = scalar(@arr); # 便利といえば便利
my $length2 = $#arr + 1; # インデックスの最後が取れるのは良いけど、コメントと見分けがつかん・・

ってかインデックスか。
まあ、用途がそもそも違うか。

shift・・?

sub greet{
  my $who = shift; # 引数がデフォルト変数@_に入ってるので、その先頭を取る
  print("Hi, $who!\n");
};

greet('Larry');

単独の引数を取るパターンは、ほとんどこうするっぽい。

printfべんりー

これが一番なるほど感があったw

foreach(sort keys %ENV){
  printf("%10s : %s\n", $_, $ENV{$_});  # %10s = 右寄せで10文字
  printf("%-10s : %s\n", $_, $ENV{$_}); # %-10s = 左寄せで10文字
};

Perlべんり!
JavaScriptのconsole.logで、そもそもこういう変数投げ込みログって最近まで知らんかったし・・。

=~ってなんぞ

正規表現で使う。

my $str = 'Everybody needs somebody now.';

if($str =~ /\bneeds\b/){ # 右ではなく左をチェック
  print('I need!');
}

/regExp/だけじゃない

/(.*?)hoge$/; # 以下でもかける
m{(.*?)hoge$};
m<(.*?)hoge$>;


次に読むなら、

参考:O'Reilly Japan - 続・初めてのPerl 改訂版

かな?

でももうPerlはおなかいっぱいです。
ただあとリファレンスくらいは知っときたいところ。