JavaScripter/ActionScripter 視点での Perl 入門メモ。ハマりどころというか。追記するかもしないかも。識者の方はツッコミください。
括弧省略
基本的に括弧は省略できる。演算子に見えて関数呼び出しだったりする。
print("hello"); print "hello";
$_ や @_
デフォルトという概念。
my @hoge = qw/apple banana orange/; for (@hoge) { print $_ . "\n"; }
コンテキストという概念
スカラコンテキストとリストコンテキスト。文脈によってスカラになったりリストになったりする仕組み。
my @hoge = qw/apple banana orange/; my @foo = @hoge; my $bar = @hoge; print @foo; print $bar;
リファレンス / 参照
サブルーチンに変数を渡す際は値渡しとなるので、リファレンスを使用する。
my @hoge = qw/apple banana orange/; sub foo { my $items = shift; push @{$items}, "grape"; } foo \@hoge; print join ", ", @hoge; #apple, banana, orange, grape
無名サブルーチン
JavaScript と変わらない。
my %hoge = ( foo => sub { print "foo"; }, ); $hoge{'foo'}();
モジュール
OOP
デバッグ
use Data::Dumper; warn Data::Dumper $hoge;