@sorted_recs = sort @recs; #### @srecs = sort {     $b->{AGE}      <=>  $b->{AGE}                    ||     $a->{SURNAME}  cmp  $b->{SURNAME} } @recs; #### @sorted_lines = sort @lines; #### use Unicode::Collate; @sorted_lines = Unicode::Collate::->new->sort(@lines); #### use Unicode::Collate; my $collator = Unicode::Collate::->new(); @srecs = sort {     $b->{AGE}  <=>  $b->{AGE}           ||     $collator->cmp( $a->{SURNAME}, $b->{SURNAME} ) } @recs; #### use Unicode::Collate; my $collator = Unicode::Collate::->new(); # first calculate the magic sort key for each text field, and cache it for my $rec (@recs) {     $rec->{SURNAME_key} = $collator->getSortKey( $rec->{SURNAME} ); }  # now sort the records as before, but for the surname field, # use the cached sort key instead @srecs = sort {     $b->{AGE}          <=>  $b->{AGE}                       ||     $a->{SURNAME_key}  cmp  $b->{SURNAME_key} } @recs; #### Lewis, C.S. McKinley, Bill MacKinley, Ron Mables, Martha Machado, José Macon, Bacon #### use Unicode::Collate; @sorted_text = Unicode::Collate::->new->sort(@text); #### @germans = qw{ Böll Born Böhme Bodmer Brandis Böttcher Borchert Bobrowski }; #### Bobrowski Bodmer Borchert Born Brandis Brant Böhme Böll Böttcher #### Bobrowski Bodmer Borchert Born Böll Brandis Brant Böhme Böttcher #### Bobrowski Bodmer Borchert Born Böhme Böll Brandis Brant Böttcher #### Bobrowski Bodmer Böhme Böll Borchert Born Böttcher Brandis Brant #### use Unicode::Collate; @sorted_germans = Unicode::Collate::->new->sort(@german_names); #### Bobrowski Bodmer Böhme Böll Böttcher Borchert Born Brandis Brant #### use Unicode::Collate::Locale; @sorted_germans = Unicode::Collate::Locale:: ->new(locale => "de_phonebook") ->sort(@german_names);