組み込み関数の多くには、スカラーコンテキストとリストコンテキストで戻り値が代わるが、 (例) localtime リストコンテキストでは、(秒,分,時,日,月,年...) というリストを返し、 スカラーコンテキストでは、"Mon Nov 1 04:22:15 2004" という文字列を返す。 自作のサブルーチンでも同じような事をさせるには、wantarray を使う。 sub func { if (wantarray) { # リストコンテキストの場合 print "list\n"; return @list; } elsif (defined wantarray) { # スカラーコンテキストの場合 print "scalar\n"; return $scalar; } else { # void コンテキストの場合(戻り値を返すことを期待されていない場合) print "void\n"; return; } } &func; # void コンテキスト $val = &func; # スカラーコンテキスト @array = &func; # リストコンテキスト