#!/usr/bin/perl use strict; use warnings; use Unicode::Collate; # hier require() zu benutzen oder die Struktur anders bauen bringt keinen Vorteil, hab ich gemessen my $alphasorter_modul = Unicode::Collate->new(); my $alphasorter_regex = qr{[^0-9 a-z!"§$%&/()=?\{\[\]\}\]><|_\-+*,.:;#'~\^]}ix; my $alphasorter = sub { return defined $_[0] && defined $_[1] ? $_[0] =~ $alphasorter_regex || $_[1] =~ $alphasorter_regex ? $alphasorter_modul->cmp($_[0],$_[1]) : lc $_[0] cmp lc $_[1] : 0 ; }; my @test = ('Nüsse','Nut','Straße','Strass','stricken','Album','nehmen'); print "Perl : ".join(" ",sort {$a cmp $b} @test)."\n\n"; print "Eigen: ".join(" ",sort {$alphasorter->($a,$b)} @test)."\n\n";