![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
Danissimo |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 14.8.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
Мне нужно, чтобы окончание строки было именно CR, LF (13, 10) в независимости от платформы (nix, win). Я добиваюсь этого таким вот образом:
Можно ли как-нть проще? |
|||
|
||||
DiverD |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 225 Регистрация: 14.9.2005 Где: Белорусь Репутация: 1 Всего: 2 |
LF - \012 CR - \015 Еще глянь perldoc Socket и IO::Socket --------------------
[ FreeBSD & pERL p0WER eVERY dAY ] |
|||
|
||||
Nab |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 25.3.2006 Где: Kiev Репутация: 26 Всего: 37 |
-------------------- Чтобы правильно задать вопрос нужно знать больше половины ответа... Perl Community FREESCO in Ukraine |
|||
|
||||
Danissimo |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 14.8.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
Nab, а чем отличается твой вариант от вот этого
$str =~ s/[^\015]\012/\015\012/g; И второй вопрос: твой вариант, по идее, должен работать и вот с такой строкой $str = "xxx\10yyy\10zzz"; да? Вот, какой результат получается: xx\x0B\x08yy\x0B\x08zzz Видимо, символ \10 все равно вопринимается как закодированный в 8-чной системе. Так что не работает. Добавлено @ 16:43 2DiverD: Спасибо. Я, правда, сначала не понял, что ты хочешь сказать, пока Nab'у не ответил. Ты бы уж попонятнее выражался, тем более что правильные вещи говоришь. Это сообщение отредактировал(а) Danissimo - 11.12.2006, 16:45 |
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
Danissimo, DiverD,
вы вообще про что говорили? ![]() Nab, очепятался ![]() \x.. шестнадцатиричное представление ![]()
|
|||
|
||||
Nab |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 25.3.2006 Где: Kiev Репутация: 26 Всего: 37 |
Вообщето, тут символы не так важны, посмотрите на тему топика и сам вопрос...
-------------------- Чтобы правильно задать вопрос нужно знать больше половины ответа... Perl Community FREESCO in Ukraine |
|||
|
||||
DiverD |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 225 Регистрация: 14.9.2005 Где: Белорусь Репутация: 1 Всего: 2 |
ну сорри =)
а что \x10 \x13 тож самое что в 8миричной \012 \015 ? --------------------
[ FreeBSD & pERL p0WER eVERY dAY ] |
|||
|
||||
Danissimo |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 14.8.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
Хе-хе, эт я знаю, что \xYY -- 16-чное представление. Я вот тоже, как и Nab, думал, что можно использовать 10-чный коды. Более того, так, как ты, Nitr, предлагаешь, делать нельзя, ибо CR != \x13, так как CR == \x0D (про LF то же самое). И как, опять же, Nab верно заметил, символы тут не при чем. Вопрос -- в названии топика. |
|||
|
||||
Danissimo |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 14.8.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
Придумал способ лучше =))
И все! =)) |
|||
|
||||
amg |
|
||||||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Да, это хороший вариант! В три раза быстрее, чем классический
Хотя более сложный вариант ala Nab еще быстрее (в полтора раза)
|
||||||||
|
|||||||||
Danissimo |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 14.8.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
О! Правильно я понимаю, что фактическое значение \n зависит от ОС? Другими словами на win* \n = \x0A\x0D, а на *nix \n = \x0A?
Я заметил, что chomp по разному работает на *nix и на win*. В первом случае он ест последний \x0D, а во втором -- пару \x0A\x0D. Я вибираю свой, так как он мне кажется лучшим с точки зрения понятности. Но это не мешает мне сказать спасибо, amg, за интересную аналитику. |
|||
|
||||
Materium |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 4.12.2006 Где: Питер Репутация: нет Всего: 2 |
Естесно. ))) Иначе Perl не был бы таким хорошо переносимым по платформам языком. ![]() --------------------
#!sub abc {return "ok"}${&abc()}="TMTOWTDI";print "$ok"; |
|||
|
||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Не совсем так. Насколько я понимаю, "\cJ", "\012", "\x0A", chr(10) и "\n" - синонимы и обозначают один символ, который перл интерпретирует как логический конец строки. А физическое воплощение этого конца строки может быть разным и зависит уже не от перла, а от строковой библиотеки ОС, драйвера терминала, сетевых драйверов и т.д. Почитать об этом можно в "Perl Cookbook", во Введении к 8-й главе. |
|||
|
||||
ZeeLax |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4388 Регистрация: 20.8.2006 Где: Алма-Ата Репутация: нет Всего: 88 |
-------------------- Utility is when you have one telephone, luxury is when you have two, opulence is when you have three — and paradise is when you have none. — Doug Larson |
|||
|
||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Я не смог придумать ситуацию, когда бы эти записи означали не один и тот же символ. По крайней мере, при выводе на терминал и при записи в файл как в linux, так и в winNT - это синонимы.
Это сообщение отредактировал(а) amg - 4.1.2007, 10:30 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |