文字列やリストをひっくり返す
reverse
は、リストコンテキスト (戻り値をリストとして受ける状況) では、
その中の要素の順番を逆にしたリストを返します。
my @list = reverse 'Taro', 'Jiro', 'Saburo';
print join( ', ', @list ); # Saburo, Jiro, Taro
スカラーコンテキスト (戻り値をスカラー変数で受け取る状況) では、要素の順番を逆にするだけでなく、 各要素の文字列の順番も逆にして、それらを連結した文字列を返します。
my $string = reverse 'Taro', 'Jiro', 'Saburo';
print $string; # orubaSoriJoraT
もし引数に何も与えられなかった場合は $_ が適用されます。 ただし、これはスカラーコンテキストの場合のみ有効です。 リストコンテキストでは何も返しません。
引数に連想配列を与えると、キーと値を逆にした連想配列を返します。
my %data = ( 'taro' => 1, 'jiro' => 2, 'saburo' => 3 );
my %rdata = reverse %data; # (1 => 'taro', 2 => 'jiro', 3 => 'saburo')
もし連想配列の値に重複があると、重複した要素のうち 1 つしか残りませんので注意してください。
my %data = ( 'taro' => 1, 'jiro' => 1, 'saburo' => 1 );
my %rdata = reverse %data; # (1 => 'taro')