按姓氏排序名称数组?

wad*_*dda 1 regex sorting perl

鉴于一系列名称标量("Joe Hanson","James Rutherford McCoy","Thomas Jay Samuels"等等),我如何按姓氏排序?

我对Perl(以及一般的脚本语言)有点新意,似乎无法解决这个问题.

小智 5

看起来像Schwartzian变换的工作(假设其他人有最后一个字符串是姓):

#!/usr/bin/perl

use warnings;
use strict;

my @names = ( 'Joe Hanson', 'James Rutherford McCoy', 'Thomas Jay Samuels', 'Joe Johnson', 'Tim McGee', 'The Reverend Horton Heat');

my @sorted_names = 
    map { $_->[0] }
    sort { $a->[1] cmp $b->[1] }
    map { [$_, /(\w+)$/] } @names;

print "$_\n" for @sorted_names;
Run Code Online (Sandbox Code Playgroud)

运行此将导致:

Joe Hanson
The Reverend Horton Heat
Joe Johnson
James Rutherford McCoy
Tim McGee
Thomas Jay Samuels
Run Code Online (Sandbox Code Playgroud)