reverse

文字列やリストをひっくり返す

構文

解説

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')