Forum Webscript.Ru
Программирование => Perl => Тема начата: Павел от 28 Августа 2001, 13:27:49
-
Я делаю
use POSIX qw( locale_h );
setlocale( LC_ALL, \\\'ru_RU.win1251\\\' );
И никакого эффекта, например, не работает ucfirst, lc и т.д.
Почему так происходит, сервер не поддерживает локэйлы???
-
Я делаю
use POSIX qw( locale_h );
setlocale( LC_ALL, \\\'ru_RU.win1251\\\' );
И никакого эффекта, например, не работает ucfirst, lc и т.д.
Почему так происходит, сервер не поддерживает локэйлы???
system(\\"locale\\",\\"-a\\");
-
Ну хорошо, пусть system(\\\'locale\\\', \\\'-a\\\') работает. Но почему не работает мой вариант, ведь он должен же работать...:(
-
Ну хорошо, пусть system(\\\'locale\\\', \\\'-a\\\') работает. Но почему не работает мой вариант, ведь он должен же работать...:(
:))
system(\\\'locale\\\', \\\'-a\\\') покажет установленные на сервере локали.
Вы уверены, что ru_RU.win1251 есть среди них?
-
И каким образом system должна показать мне присутствующие локэйлы???
-
И каким образом system должна показать мне присутствующие локэйлы???
print system(\\\'locale\\\', \\\'-a\\\');
Зависит он настроек сервера, но есть вероятность, что покажет в виде списка.:)
Если нет, то из shell: locale -a, если шела нет, то пытай админа каленым железом.:)
-
print system( \\\'locale\\\', \\\'-a\\\' ) я естественно сделал сразу, мне вывелось 256. Мне это ни о чем не говорит. Через shell, например, у провайдер такой команды просто нет. Админа под рукой как назло тоже нет.:(
-
Попробуй так:
#!/usr/bin/perl
print \\"Content-type: text/plain\\\\n\\\\n\\";
open(SYS,\\"locale -a |\\");
while()
{
print ;
}
close(SYS);
-
Есть другой путь. Если не хочешь куртыкаться с локалями, а это дело нудное, попробуй переписать необходимые тебе функции. Вот пример функции 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.
-
Уважаемый, Fluke. Именно так я сразу и сделал:D Просто было интересно разобраться с локэйлами
-
Уважаемый Павел,
Спасибо за ответ.
Не хочется выглядеть снобом, но locale произносится и пишется как локаль, а не локейл (словарь Webster\\\'а).
Кстати модификатор i к командам типа m/../../ и s/../../ тоже не работает без локалей, а как его переписать я не знаю.
С уважением Fluke.