Форум программистов CODEBY.NET Хостинг в Беларуси — Active Technologies

Разработка бизнес сайтов

Нужны клиенты? Тогда сюда быстрее...
X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )




> Файлы и массивы, Помогите понять
Vadik(R)
Вставить ник
сообщение 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
 
Новая тема 
Ответов (1 - 3)
Vadik(R)
Вставить ник
сообщение 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
Vovochka
Вставить ник
сообщение 11:02:2008, 23:46
Цитата Ответить 


Продвинутый
**

Группа: Программист
Сообщений: 198
Регистрация: 4:08:2006
Из: Vladivostok.pm
Пользователь №: 5 749
Специализация: Perl, Web



Репутация: - 4 +


Цитата(Vadik® @ 12:02:2008, 00:47 )
1. Почему перед словом Internet стоит какой-то квадратик и как от него избавиться?
*

Скорее всего файл был сохранен в кодировке 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
Vadik(R)
Вставить ник
сообщение 12:02:2008, 11:38
Цитата Ответить 


Продвинутый
**

Группа: Программист
Сообщений: 122
Регистрация: 12:12:2007
Из: Волгоград
Пользователь №: 14 203
Специализация: Программист, знаю HTML, JS, CSS, Паскаль.



Репутация: - 2 +


Да ничего, всё, я уже сам разобрался. А вот извратиться так всё-таки как-то получилось. Вся проблема была в формате файла. Я поначалу его создал, и первый раз видимо неправильно открыл Perl'ом, из-за этого в блокноте файл всё равно отображался как надо, но структура была уже подпорчена.

Сообщение отредактировал Vadik(R) - 12:02:2008, 11:39
Подняться вверх 
 
Сообщение #4


Быстрый ответ  Ответить  Новая тема 

> Быстрый ответ
Полужирный
Курсив
Подчеркнутый
Вставить изображение
Смайлики
Цитата
Код
 
 Отправлять уведомления об ответах на e-mail |  Включить смайлики |  Добавить подпись
   

 

RSS Текстовая версия Сейчас: 17:05:2008 - 04:31
с нами можно связаться по:
телефону: +375-(29)-632-60-67
e-mail:info@codeby.net