Файлы и массивы

Тема в разделе "Perl программирование", создана пользователем Vadik(R), 11 фев 2008.

  1. Vadik(R)

    Vadik(R) Well-Known Member

    Регистрация:
    12 дек 2007
    Сообщения:
    483
    Симпатии:
    0
    Люди, гляньте вложение. Посмотреть вложение hangman.rar
    В проге yes задается массив и выводится количество элементов в нем, и печатаеться сам массив двумя способами. В проге no я пытался считать этот список из файла, но вот две проблемы:
    1. Почему перед словом Internet стоит какой-то квадратик и как от него избавиться?
    2. Почему в проге yes первый вывод(print @words;) выводил массив в одну строчку, а впроге no - в 4 строчки?
    P.S. Пробовал после считывания массива поэксперементировать с chomp;, но тогда при выводе массива вообще начинало писаться одно слово: printerma (я как понял сложение и замещение:
    internet+
    otvet+
    programma+
    printer=
    -----------------
    printerma
    ).
     
  2. Vadik(R)

    Vadik(R) Well-Known Member

    Регистрация:
    12 дек 2007
    Сообщения:
    483
    Симпатии:
    0
    А, я кажеться всё понял... тут Perl не виноват, тут скорее виноват тот, кто не умеет им пользоваться.
    Видимо я когда-то открыл файл неправильно и перл переделал его в свой формат... и теперь он открывается снова неправильно. А если создать новый файл и вбить туда те же самые слова, то все работает прекрасно. Даже видно что новый файл будет весит 35 б, а hangman.txt - 72 б.
     
  3. Vovochka

    Vovochka Гость

    <!--QuoteBegin-Vadik&reg;+12:02:2008, 00:47 -->
    <span class="vbquote">(Vadik&reg; @ 12:02:2008, 00:47 )</span><!--QuoteEBegin-->1. Почему перед словом Internet стоит какой-то квадратик и как от него избавиться?
    [snapback]97563" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Скорее всего файл был сохранен в кодировке utf8 с BOM подписью.
    <!--QuoteBegin-Vadik&reg;+12:02:2008, 00:47 -->
    <span class="vbquote">(Vadik&reg; @ 12:02:2008, 00:47 )</span><!--QuoteEBegin-->2. Почему в проге yes первый вывод(print @words;) выводил массив в одну строчку, а впроге no - в 4 строчки?
    [snapback]97563" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Да. Именно потому что каждое слово после считывания из файла содержит еще символ перевода строки.
    <!--QuoteBegin-Vadik&reg;+12:02:2008, 00:47 -->
    <span class="vbquote">(Vadik&reg; @ 12:02:2008, 00:47 )</span><!--QuoteEBegin-->P.S. Пробовал после считывания массива поэксперементировать с chomp;, но тогда при выводе массива вообще начинало писаться одно слово: printerma
    [snapback]97563" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Ничего не понял. Как это надо было извратиться? Если вам мало примера из perlfunc,
    то вот удаление перевода строки для вашего массива:
    Код (Text):
    @words = map { chomp; $_ } @words;
     
  4. Vadik(R)

    Vadik(R) Well-Known Member

    Регистрация:
    12 дек 2007
    Сообщения:
    483
    Симпатии:
    0
    Да ничего, всё, я уже сам разобрался. А вот извратиться так всё-таки как-то получилось. Вся проблема была в формате файла. Я поначалу его создал, и первый раз видимо неправильно открыл Perl'ом, из-за этого в блокноте файл всё равно отображался как надо, но структура была уже подпорчена.
     
Загрузка...
Похожие Темы - Файлы массивы
  1. lmike
    Ответов:
    27
    Просмотров:
    295
  2. garrick
    Ответов:
    25
    Просмотров:
    662
  3. sgfsdg
    Ответов:
    1
    Просмотров:
    428
  4. vovanabali
    Ответов:
    0
    Просмотров:
    538
  5. anatoliygorbunov
    Ответов:
    1
    Просмотров:
    755

Поделиться этой страницей