Помощник
Здравствуйте, гость ( Вход | Регистрация )
|
|
11:02:2008, 14:47
|
|
Продвинутый ![]() ![]() Группа: Программист Сообщений: 122 Регистрация: 12:12:2007 Из: Волгоград Пользователь №: 14 203 Специализация: Программист, знаю HTML, JS, CSS, Паскаль. Репутация: 2
|
Люди, гляньте вложение.
hangman.rar ( 510 байт )
Кол-во скачиваний: 12В проге yes задается массив и выводится количество элементов в нем, и печатаеться сам массив двумя способами. В проге no я пытался считать этот список из файла, но вот две проблемы: 1. Почему перед словом Internet стоит какой-то квадратик и как от него избавиться? 2. Почему в проге yes первый вывод(print @words;) выводил массив в одну строчку, а впроге no - в 4 строчки? P.S. Пробовал после считывания массива поэксперементировать с chomp;, но тогда при выводе массива вообще начинало писаться одно слово: printerma (я как понял сложение и замещение: internet+ otvet+ programma+ printer= ----------------- printerma ). Сообщение отредактировал Vadik(R) - 11:02:2008, 14:49 |
|
Сообщение
#1
|
|
![]() |
|
|
11:02:2008, 18:00
|
|
Продвинутый ![]() ![]() Группа: Программист Сообщений: 122 Регистрация: 12:12:2007 Из: Волгоград Пользователь №: 14 203 Специализация: Программист, знаю HTML, JS, CSS, Паскаль. Репутация: 2
|
А, я кажеться всё понял... тут Perl не виноват, тут скорее виноват тот, кто не умеет им пользоваться.
Видимо я когда-то открыл файл неправильно и перл переделал его в свой формат... и теперь он открывается снова неправильно. А если создать новый файл и вбить туда те же самые слова, то все работает прекрасно. Даже видно что новый файл будет весит 35 б, а hangman.txt - 72 б. Сообщение отредактировал Vadik(R) - 11:02:2008, 18:00 |
|
Сообщение
#2
|
|
|
|
11:02:2008, 23:46
|
|
Продвинутый ![]() ![]() Группа: Программист Сообщений: 198 Регистрация: 4:08:2006 Из: Vladivostok.pm Пользователь №: 5 749 Специализация: Perl, Web Репутация: 4
|
Цитата(Vadik® @ 12:02:2008, 00:47 ) Скорее всего файл был сохранен в кодировке utf8 с BOM подписью. Цитата(Vadik® @ 12:02:2008, 00:47 ) 2. Почему в проге yes первый вывод(print @words;) выводил массив в одну строчку, а впроге no - в 4 строчки? Да. Именно потому что каждое слово после считывания из файла содержит еще символ перевода строки. Цитата(Vadik® @ 12:02:2008, 00:47 ) P.S. Пробовал после считывания массива поэксперементировать с chomp;, но тогда при выводе массива вообще начинало писаться одно слово: printerma Ничего не понял. Как это надо было извратиться? Если вам мало примера из perlfunc, то вот удаление перевода строки для вашего массива: Код @words = map { chomp; $_ } @words;
|
|
Сообщение
#3
|
|
|
|
12:02:2008, 11:38
|
|
Продвинутый ![]() ![]() Группа: Программист Сообщений: 122 Регистрация: 12:12:2007 Из: Волгоград Пользователь №: 14 203 Специализация: Программист, знаю HTML, JS, CSS, Паскаль. Репутация: 2
|
Да ничего, всё, я уже сам разобрался. А вот извратиться так всё-таки как-то получилось. Вся проблема была в формате файла. Я поначалу его создал, и первый раз видимо неправильно открыл Perl'ом, из-за этого в блокноте файл всё равно отображался как надо, но структура была уже подпорчена.
Сообщение отредактировал Vadik(R) - 12:02:2008, 11:39 |
|
Сообщение
#4
|
|
![]() |
|
Текстовая версия | Сейчас: 17:05:2008 - 04:31 |