alexkuklin: (Default)
[personal profile] alexkuklin
Общая постановка задачи: Как в процессе работы перлового скрипта переключиться с однойдругую на дргугую.


Задача для частного случая: Два раза напечатать дату. Один раз в локале из которой скрипт бвторойщен, втоврой раз
в локале en_US (В системе такая локаль есть)

Пробуем решить:

use strict;
use POSIX;

print strftime("%B %d, %Y",0, 0, 0, 30, 10, 79)."\n";

setlocale('LC_ALL','en_US');
$ENV{'LANGUAGE'} = 'en_US';
$ENV{'LANG'} = 'en_US';
$ENV{'LC_ALL'} = 'en_US';

print strftime("%B %d, %Y",0, 0, 0, 30, 10, 79)."\n"; 


Решение не верное. Оба раза дата выводится по русски...

Где ошибка, куда копать?

Date: 2005-11-27 05:51 pm (UTC)
From: [identity profile] solya.livejournal.com
setlocale ('LC_TIME', 'en_US')

а не так?

Date: 2005-11-27 06:01 pm (UTC)
From: [identity profile] timurv.livejournal.com
# This functionality not usable prior to Perl 5.004
require 5.004;

use warnings;
use strict;

# Import locale-handling tool set from POSIX module.
# This example uses: setlocale -- the function call
# LC_CTYPE -- explained below
use POSIX qw(locale_h strftime);

print strftime("%B %d, %Y",0, 0, 0, 30, 10, 79)."\n";

setlocale(LC_ALL, "en_US");

print strftime("%B %d, %Y",0, 0, 0, 30, 10, 79)."\n";


----
$ cat /etc/fedora-release
Fedora Core release 4 (Stentz)
----
$ perl -v

This is perl, v5.8.6 built for i386-linux-thread-multi

Кавычки в общем =)

Date: 2005-11-27 06:02 pm (UTC)
From: [identity profile] timurv.livejournal.com
Не нада кавычек вокруг LC_ALL в setlocale

Re: Кавычки в общем =)

Date: 2005-11-27 06:23 pm (UTC)
ext_613079: Default userpic (Default)
From: [identity profile] shaplov.livejournal.com
Ой... а пачему?
LC_ALL это что?

Re: Кавычки в общем =)

Date: 2005-11-27 06:36 pm (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
Процедура такая. Определенная в модуле POSIX. Вообще константы в Perl обычно такие процедуры, возвращающие константное значение.

Re: Кавычки в общем =)

Date: 2005-11-27 06:44 pm (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
Правило первое user never reads documentation

Там же написано про setlocale буквально следующее:

Modifies and queries
program’s locale. The following examples assume
        use POSIX qw(setlocale LC_ALL LC_CTYPE);


has been issued.



The following will set the traditional
UNIX system locale behavior (the second
argument "C").


        $loc = setlocale( LC_ALL, "C" );



Правило второе - если у юзера не получается удалить файл в /tmp он переустанавливает систему.
НИКОГДА НЕ ПЕРЕСТАВЛЯЙТЕ LC_ALL. Надо время - значит это LC_TIME. Надо верхний/нижний регистр - значит LC_CTYPE. А то огребете грабли с LC_NUMERIC.

Date: 2005-11-27 09:55 pm (UTC)
ext_613079: Default userpic (Default)
From: [identity profile] shaplov.livejournal.com
Зенаешь, тогда я не понимаю почему на ct-net'е даты получаются русские...
Я внимательно посмотрел, там все без кавычек...
Вообщем буду дальше копать.. :-/

Profile

alexkuklin: (Default)
alexkuklin

January 2020

S M T W T F S
    1234
567891011
12131415161718
19202122232425
262728293031 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 27th, 2025 01:47 am
Powered by Dreamwidth Studios