
サブルーチンシグネチャとは
PerlにはサブルーチンシグネチャというJavaScriptのデフォルト引数のようなものがあるのだが、JavaScriptのように普通に指定するだけでは使用できない。
サブルーチンシグネチャを使用するには下記の3点の注意が必要。
1. バージョンをv5.20以上にする
サブルーチンシグネチャはv5.20以上でないと使用できないためv5.20以上をuseで指定する必要がある。
現在だとv5.20未満の環境が多い。
# !/usr/local/bin/perl use v5.24; use warnings;
2. サブルーチンシグネチャを有効にする
下記のように指定してサブルーチンシグネチャを有効にする。
use feature signaturesだけだと警告が出るため、no warnings experimental::signaturesも指定しておく。
# !/usr/local/bin/perl use v5.24; use warnings; use feature 'signatures'; no warnings "experimental::signatures";
3. サブルーチンシグネチャにmyを付けない
sub list(my $a = 0)はエラーになる。
普通に下記のようにmyを付けずに記述すると良い。
# !/usr/local/bin/perl use v5.24; use warnings; use feature 'signatures'; no warnings "experimental::signatures"; sub list($a = 0, $b = 3) { $a < $b ? $a..$b : $b..$a; } my @results1 = list(); my @results2 = list(1, -3); say "@results1"; # => 0 1 2 3 say "@results2"; # => -3 -2 -1 0 1