use locale; use POSIX qw (locale_h); .... setlocale(LC_CTYPE, 'Russian_Russia.20866') or die "Can't set locale: $!"; foreach $name (sort keys %authors) { ($letter) = ($name =~ /^(.)/); $letter = uc $letter; if ($letter ne $last_letter) { print IND "

$letter

\n"; $last_letter = $letter; } print IND qq{$authors{$name}[0]
\n}; }