Программирование в PERL

Раздел форума: 

Аватар пользователя admin

Автор темы: 

Вадим Нарейко
Народ, есть вот вопрос и по этому поводу решил создать форум. Благо такой тематики здесь еще не представлено.

Вопрос такой. Есть файл, в котором записаны записи в двоичном виде. Как их в Перле перевести в текст?

Например, возьмем следующую структуру записи:{int num; char[20] name; longint mask}

Страницы

Аватар пользователя Вадим Нарейко
В принципе, вопрос снят. Проблема оказывается была в неточном переводе на великий и могучий русский язык. При обращении к первоисточнику все разрешилось.

Надеюсь все же, что данный форум будет жить дальше.

Аватар пользователя Вадим Нарейко
Боюсь показаться навязчивым, но, хотя данный форум пока что напоминает монолог, задам вопрос, который меня мучает.

Есть два файла: values.pl и programm.pl. Пусть в values.pl определены некоторые переменные. Как его подключить к programm.pl? Создание библиотеки не предлагать.

Аватар пользователя Алекс Дробыш
Не знаю, кто как, а я для этого использую строчку вроде

require "values.pl";

Или вопрос не об этом?

Аватар пользователя Бобр
Вадик, ты видно работой занялся? :-))))
Аватар пользователя Sergey Mashinsky
Пытаюсь прикрутить доску сообщений у себя на сайте (http://msg.virtualave.net), но ничего не получается.

Сервер выбрасывает сообщение об ошибке 500.

Доска написана на Перле. Путь к нему прописан правильно. Создан каталог /cgi-bin и там лежат все pl-файлы, атрибуты executive стоят. Сама доска находиться в /doska, и также все аттрибуты выставлены нормально.

Сайт позволяет запускать cgi и pl приложения.

Вопрос: где собака порылась?

Аватар пользователя Алекс Дробыш
Пару советов.

1. Форматы текстовых файлов в DOS/Windows и Unix отличаются тем, что в DOS'е конец строки обозначается двумя символами (перевод строки+возврат каретки), а в Unix -- только одним. Поэтому транслятор Perl'а воспринимает лишний символ в конце строки, как непонятно что. Совет: закачивать файл на сервер не как binary, а как text. При этом автоматически DOS'овские концы строк преобразуются в Unix'овские.

2. Если это не поможет, тогда придется отлаживать скрипты (возможно, в них какая-то ошибка). Так что в telnet'е вводим perl -d имя_скрипта, и вперед ;)

Аватар пользователя Вадим Нарейко
Кстати, Сергей, насчет Perla и VIRTUALAVE.NET:

1) домашняя директория не обязательно /home/yourid - у меня оказалась /z3/act, где act - мой идентификатор

2) Вот скрипты у меня с утра работали... А сейчас нет - ошибка 500. Может, на сервере что меняется.

Аватар пользователя Вадим Нарейко
Кстати, народ, можно ли сделать в Perl массивы массивов?

И еще, как принимать файлы, используя multipart/form-data?

Аватар пользователя Дмитрий Бородаенко
Про массивы массивов документация Перла рассказывает, только так муторно, что я в свое время решил считать индексы по формуле n*i+j... Но если очень хочется -- то можно. Это вообще главный принцип, по которому Перл построен.
Аватар пользователя Вадим Нарейко
Поставим вопрос по-другому: можно ли (и как), чтобы элемент массива был массивом?
Аватар пользователя Нарейко Вадим
Может кто-нибудь подскажет, кто какие видел/использовал/посоветует не электронные издания по Perl? Язык - русский, английский.
Аватар пользователя A. D. Saemon
Learning Perl

Programming Perl

Обе книги издательства O'Reilly, первая точно существует в русскоязычном варианте, вышла в издательстве "BHV-Санкт-Петербург".

Ну, собственно, СОВЕТУЮ.... :)

Аватар пользователя Дмитрий Бородаенко
Причем первая -- Изучаем Perl -- тебе, Вадим, в твоем горе не поможет, а вторая в русском переводе не ожидается, так что придется выписывать из-за бугра. Кстати, ежели выпишешь, дай знать :)
Аватар пользователя Вадим Нарейко
Вот в последнюю субботу искал книгу по Perl в Минске. Нигде ничего нету. Осталось только посмотреть на книжной выставке да на книжный базар съездить.

Что касается "Programming Perl" 2nd edition, то у меня была возможность заказать ее (есть у меня друг в Миннесоте). Однако я хотя и склонялся к этой книге, предпочел "Perl Cookbook". Книгу мне уже заказали, жду.

Аватар пользователя Алексей Романовский
www.citforum.belhard.com

там и книжка по перлу какая-то валяется,

и вроде не одна.

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

Купил-таки "Learning Perl" 2nd edition на русском. Да, уровень не очень, но для меня было кое-что интересное. прочитал в расслабленном состоянии 2/3 за вечер.

Аватар пользователя Андрей Гриневич
Может посоветуете книжку (русский, английский) по сабжу, в электронном (хотя можно и бумажном) формате. Чтобы в ней было хоть какоето нормальное описание встроенных функций с краткими примерами. А то все книжки, что видел и читал, предлагают только краткое описание. :(
Аватар пользователя Вадим Нарейко
Андрей.

Судя по тому, какую информацию я получил за время поиска литературы, лучшей книгой такого рода должная являться "Programming Perl" 2nd edition.

Краткое описание функций есть в книге "Введение в Перл" (видел только в электронном виде) на русском.

Хотелось бы узнать, какую литературу нашли Вы?

Аватар пользователя Андрей Гриневич
Видимо в электронном виде распространяется только одна книга. :-) Введение в перл.

Вадим, скажите, а книга "Programming Perl" 2nd edition, распрастраняется только в бумажном варианте?

Аватар пользователя Вадим Нарейко
По-видимому, да. Книга эта достаточно популярная, и у авторов не должно возникать желания распространять ее электронный вариант. Во всяком случае я такового не видел
Аватар пользователя Дмитрий Бородаенко
А кувалдой пробовали? (в смысле man-страницы да исходники читали?)
Аватар пользователя Вадим Нарейко
Обижаешь, Дима. Куда ж сейчас без кувалды? ;-)
Аватар пользователя Дмитрий Бородаенко
Мамочки... Дык што ж ты такое куешь, что тебе кувалды мало? Массив массивов?
Аватар пользователя Вадим Нарейко
Я постоянно в процессе "куения". ;-)

А с "массивом массивов" я разобрасля как раз с помощью "кувалды".. То есть, мана.

Аватар пользователя Дмитрий Бородаенко
Я вот массив массивов стал бы делать через ссылки (это, кстати есть в незабвенной Lama Book (Изучаем Perl от O'Reilly)), или, в более простом случае, через парсинг строк. Вот интересно, в Мане то же самое или, как везде в Perl, есть еще способы?
Аватар пользователя Вадим Нарейко
Можно делать $arr[i][j], можно через ссылки.

Там, по-моему, способа два-три.

Аватар пользователя Вадим Нарейко
В скором будущем прокомментирую книгу "Perl Cookbook" by Tom Christiansen & Nathan Torkington от O'REILLY, так как сегодня начал ее читать.
Аватар пользователя Кирилл
Люди!!! Помогите плз!!! В чем принцип упаковки функции "pack" (что означает "Упаковка в двоичную структуру)? Что делает строка pack("C",hex($1)) c переменной $1 ? Что означает цифра в строке print(pack("A4A3","ab","cdefg"))?

Заранее очень благодарен.

Кирилл

Аватар пользователя В.Н.
hex($1) - переводит в десятичное систему шестнадцетиричное значение, находящееся в $1

pack('C',hex($1)) - возвращает символ, шестнадцетиричный код которого находится в $1

pack("A4A3","ab","cdefg") - запаковать строку "ab" в четыре символа, добавляя пробелы и строку "cdefg" в 3 символа, обрезая ее

Аватар пользователя Денис Марголин
Кстати, в lama book,которая есть на русском, pack описан достаточно подробно

Недавно вышедшая книга красного цвета про CGI на перл -- полный сакс.

Сочетание lama book + упомянутая выше кувалда дает лучший эффект, причем быстрее.

Откуда делаем вывод -- если пишешь на перл -- лама бук надо брать. А сомнительную красную книгу (отстой!..) -- не брать

Страницы