
サブルーチンシグネチャとは
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


