| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > Проблема "склеивания" строки из фаила и из STDIN |
| Автор: StargazerV 3.4.2010, 19:08 | ||
Если коротко, то я пытаюсь прочесть строку из файла, получить к ней дополнение от пользователя из STDIN и обьеденив их вместе, куда-то положить. Куда-то, котопу, что это не важно, куда. Проблема именно с объединением.
в результыте подобного кода, получаю к примеру следующие результаты: строка из открытого файла Enter row documentation: документация документацияытого файла т.е. при объединении данные как бы накладываются один на другой, вместо объединения. Есть мысли? |
| Автор: shamber 3.4.2010, 19:24 | ||
Начните с простого
|
| Автор: StargazerV 3.4.2010, 19:27 | ||
| уже есть. я не уточнил, та часть, которую я выложил, это только проблематичная часть, т.е. не весь код. Есть и use strict; и всякое разное. Добавлено через 50 секунд На всякий случай, вот ВЕСЬ код
|
| Автор: shamber 3.4.2010, 19:32 | ||||||
| StargazerV, описанных вами проблем не испытываю. У меня все печатается как и ожидается. test.txt
test.pl
|
| Автор: StargazerV 3.4.2010, 19:38 |
| мде.... а это уже совсем грустно. возможно проблема в интерпритаторе перла? изначально пишу все под линукс. Запускаю через cygwin, в котором установлен perl. Если кто не в курсе, cygwin создает под windows оболочку линуска. Но я попробую сейчас запустить скрипт на прямую в линуксе, возможно прблема в cygwin, хотя сомнительно. |
| Автор: StargazerV 3.4.2010, 20:12 |
| Да в принципе ничего. Корочи проблема в том, что запускается все это под линуксом (так надо). И под линуксом испытывается вышеуказанная проблема. в Win не пробовал, но и не надо. |
| Автор: shamber 3.4.2010, 20:24 |
| StargazerV, а нормальный Linux не пробовали запускать? |
| Автор: StargazerV 3.4.2010, 20:27 |
| пробовали, пробовали. Результат тот же. |
| Автор: shamber 3.4.2010, 20:36 |
| StargazerV, Я тоже пробовал |
| Автор: StargazerV 3.4.2010, 21:06 |
| Мде... т.е. проблема в том, как линукс обрабатывает перл, а не в коде. Странно. Возможно, нужно что-то где-то добавить в коде... хз, как это решить. |
| Автор: Logo 4.4.2010, 17:08 | ||
| У меня нормальный вывод. Ubuntu 9.10. Проверь, не закрался ли символ возврата каретки \r в строки. Скорее всего в файле виндовый перевод строки \r\n и символ \r остается. [offtop] Правильно
|
| Автор: NuINu 4.4.2010, 19:46 | ||
какая дикость, как язык поворачивается так сказать ))), помимо того что это просто не грамотно, еще так грешить на линукс )), который здесь совершенно не причем. к гадалке не ходи это проблема в \r и в том что chomp убирает только \n решалась бы банально $/ = "\r\n"; если бы вы при это еще из stdin ничего не читали но при вашем варианте у вас получается ввод файлов в двух разных стандартах окончания строки, перл к такому слабо приспособлен. посему простой регэксп избавит от проблем. while($row = <PROGFILE>) { chomp($row); $row =~ s/\r//; кстати если бы вы выводили данные в файл а не на терминал результат был бы иным, попробуйте. ) |
| Автор: StargazerV 5.4.2010, 19:42 |
| Да, с \r я бы сам не дошел. Большое спасибо, очень помогло! |