• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы Vadik(R)
  • Дата начала
V

Vadik(R)

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

Vadik(R)

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

Vovochka

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

Vadik(R)

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!