Есть другой путь. Если не хочешь куртыкаться с локалями, а это дело нудное, попробуй переписать необходимые тебе функции. Вот пример функции uc():
#!/usr/bin/perl -w
$key = \\"моя собственная функция UPPER CASE\\";
@upper = (\\\'А\\\',\\\'Б\\\',\\\'В\\\',\\\'Г\\\',\\\'Д\\\',\\\'Е\\\',\\\'Ё\\\',\\\'Ж\\\',\\\'З\\\',\\\'И\\\',\\\'Й\\\',\\\'К\\\',\\\'Л\\\',\\\'М\\\',\\\'Н\\\',\\\'О\\\',\\\'П\\\',\\\'Р\\\',\\\'С\\\',\\\'Т\\\',\\\'У\\\',\\\'Ф\\\',\\\'Х\\\',\\\'Ц\\\',\\\'Ч\\\',\\\'Ш\\\',\\\'Щ\\\',\\\'Ь\\\',\\\'Ы\\\',\\\'Ъ\\\',\\\'Э\\\',\\\'Ю\\\',\\\'Я\\\');
@lower = (\\\'а\\\',\\\'б\\\',\\\'в\\\',\\\'г\\\',\\\'д\\\',\\\'е\\\',\\\'ё\\\',\\\'ж\\\',\\\'з\\\',\\\'и\\\',\\\'й\\\',\\\'к\\\',\\\'л\\\',\\\'м\\\',\\\'н\\\',\\\'о\\\',\\\'п\\\',\\\'р\\\',\\\'с\\\',\\\'т\\\',\\\'у\\\',\\\'ф\\\',\\\'х\\\',\\\'ц\\\',\\\'ч\\\',\\\'ш\\\',\\\'щ\\\',\\\'ь\\\',\\\'ы\\\',\\\'ъ\\\',\\\'э\\\',\\\'ю\\\',\\\'я\\\');
foreach $i (0..32)
{$key =~ s#$lower[$i]#$upper[$i]#g;}
print $key;
exit(0);
Аналогично пишется lc(). Ну а с lcfirst и т. д. попробуй разобраться сам.
С уважением Fluke.