5.12からの機能
続いて5.
yadayada演算子──サンプルコードで便利
yadayada演算子は...と書きます。挙動としてはdie"Not Implemented"
とまったく一緒です。本稿のサンプルコードでも実は使っています。サンプルコードなどで
「ヤダヤダ」
package VERSION構文──バージョン宣言が楽に
5.
package MyApp 1.10;
ここで指定した番号は、
今までバージョンの示し方は、
package MyApp;
our $VERSION = "1.10";
$VERSION = eval $VERSION;
歴史的経緯からくるおまじないを排除できるのはとてもうれしいことです。
5.14からの機能
最後は5.
s///r──rオプションで非破壊置換
置換演算子s///
)y///
)
例を示します。次のコードはrオプションのありなしの挙動を示したものです。
my $string = "foobar";
say $string =~ s/foo/aaa/r; #=> aaabar …(1)
say $string; #=> foobar …(2)
say $string =~ s/foo/aaa/; #=> 1 …(3)
say $string; #=> aaabar …(4)
このオプションはmapなどでたいへん便利に使えます。
(1)rなし
map { my $s = $_; $s =~ s/^/0/; $s } qw/a b c/;
(2)rあり
map { s/^/0/r } qw/a b c/;
(3)Modification of a read-only value attempted
map { s/^/0/; $_ } qw/a b c/;
上のコードの
s///
が破壊的なため、s///
するためだけに代入しなくてはならないケースがしばしばありましたが、
push $arrayref──デリファレンスいらずの文法拡張
push、
次のように、
5.12まで
push @{ $foo->{array} }, 'a';
5.14から
push $foo->{array}, 'a';
ただ、
packageブロック文──明示的なパッケージブロック
次のように、
package MyApp {
}
これは次のコードと完全に一緒です。
{ package MyApp;
すなわち、
deltaを見る
perl の新機能はperldoc perl5100delta
、perldoc perl5120delta
、perldoc perl5140delta
とすることで、
今回紹介した以外にも細かな新機能は増えていますので、
まとめ
今回はリファレンスの引き方と、
さて、