Perl:: "\n" в юникоде

Тема в разделе "WASM.RESEARCH", создана пользователем green, 23 фев 2006.

  1. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    Как записать в юникодный файл символ новой строки "\n"?

    У меня что-то никак не получается.

    Код
    Код (Text):
    1.  
    2. open F, '>:encoding(UTF-16LE)', "test.txt";
    3. print F "\n";
    4. close F;
    5.  


    пишет в test.txt
    Код (Text):
    1. 0x0D, 0x0A, 0x00
    .

    :-(



    ----

    ActveState Perl v5.8.7
     
  2. Smile

    Smile New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2004
    Сообщения:
    129
    Измени встроенные переменные $/ или $\

    В них содеоржатся символы разделяюшие строки
     
  3. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    Smile

    т.е. сделать $\="\n" ?

    не работает, выводится то же самое.



    Пробовал ещё вот так:

    print "\x0D\x0A";

    Получаю 0D 00 0D 0A 00



    Т.е. вместо \x0A всегда выводит 0D 0A

    :-\
     
  4. Smile

    Smile New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2004
    Сообщения:
    129
    Т.е. вместо \x0A всегда выводит 0D 0A



    есть такое дело, можно менять $\ на любой символ и будет нормально работать, но если поставить \xA то функция при записи заменит на перевод строки в текущей системы, тоесть

    \xDxA для windows



    можно перевести файл в бинарный режим и всякий мусор добавляться не будет :)



    open (F, ]test.txt");

    binmode (F);

    print "BLA\n" # => BLA\x0A

    $\ = "\xA";

    print "BLA" # => BLA\xA



    #Perl 5.03 Win32 Build 315
     
  5. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    Smile

    Спасибо. Придется видимо юникодный текст писать во временной файл, а потом перегонять в бинарном режиме, корректируя переводы строки.