Next Previous Contents

11. Борьба с глюками m$ windows

11.1 Почему мой perl ругается на flock()?

Потому что на windows нет flock(2).

Используйте File::Lock с CPAN.

11.2 Тоже самое, но с fork()?

Windows это не unix. Они fork не умеют.

11.3 Как бы мне добится нормальной сортировки в алфавитном порядке, преобразования в прописные/строчные буквы?

Perl для этого опирается на механизм locale. К счастью, это работает и на windows:

Если надо работать с CP866, пишем

  use locale;
  use POSIX;
  &POSIX::setlocale(&POSIX::LC_ALL, "Russian_Russia.866");
  print uc "Да, здесь будут заглавные буквы";

если KOI8 (sic!):

  &POSIX::setlocale(&POSIX::LC_ALL, "Russian_Russia.20866");

если с CP1251 -- просто

use locale;

Со всеми тремя кодировками работают и uc/lc, и /\w/

Проверено под NT на perl 5.005_02, собраном через VC++ 5.0 из исходников, скачанных с CPAN/ports/win32/Standard/

11.4 Почему скрипты, которые я написал дома на windows, при загрузке на unix машину не работают?

Этому может быть миллион разных причин, но самая часто встречающаяся -- unix и наследники CP/M используют разные последовательности конца строки.

Если вы их загружаете по ftp, включите режим ASCII.


Next Previous Contents