関数順 インデックス
目的別 インデックス

構文
 
 wantarray

返り値
 
 戻り値にリストが要求されている場合に真

説明

  • 現在のサブ・ルーチンの戻り値としてリストが要求されている場合に真,スカラーが要求されている場合に偽を返します。

使用例

日付を返す関数get_todayを定義して呼び出す。get_todayはリスト・コンテキストで呼ばれた場合は年・月・日のリストを返し,スカラー。コンテキストで呼ばれた場合は年-月-日形式の文字列を返す
#!/usr/bin/perl
use strict;
use warnings;

my ($year, $month, $day) = get_today();
print "$year/$month/$day\n";

my $today = get_today();
print $today, "\n";

sub get_today {
  my ($d, $m, $y) = (localtime)[3..5];
  $y += 1900;
  $m++;
  
  if (wantarray) {
    return ($y, $m, $d); # リストで返す
  } else {
    return "$y-$m-$d"; # スカラーで返す
  }
}
リストの中から偶数のものを返す関数get_evenを定義して呼び出す。get_evenはリスト・コンテキストで呼ばれた場合は偶数の値のリストを返し,スカラー・コンテキストで呼ばれた場合は偶数の値の数を返す
#!/usr/bin/perl
use strict;
use warnings;

my @data = (1, 2, 3, 4, 5, 6, 7, 8, 9);
my @ret = get_even(@data);
foreach my $item (@ret) {
  print $item, "\n";
}
print "\n";

my $even_num = get_even(@data);
print $even_num, " item(s)\n";

sub get_even {
  my @list = @_;
  
  my @target = grep {$_ % 2 == 0} @list;
  
  if (wantarray) {
    return @target;
  } else {
    return scalar(@target);
  }
}