Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
| afterstep |
17.10.2007, 11:32
Сообщение
#1
|
|
Пользователь Группа: Активисты Сообщений: 5 336 Регистрация: 14.3.2005 Пользователь №: 2 413 |
Язык программирования - прост. Кроме того - это интерпретатор - гибок.
В *nix системах перл - обязательная компонента системы6 присутствует всегда (если не "снести" специально) Для винды - версию совершенно свободно можно скачать с activestate.com Весь текст после '#' - комментарий. Ключевое слово my используется для явного определения переменной (вроде var в паскакале) Название переменной всегда начинается с '$', массива - '@', обращение к элементу массива - производится как к переменной с именем масива и индексом, и есть понятие "хеш" - чуть позже о нем. Несколько простейших примеров: Код #!/usr/bin/perl -w print "Hello, world!\n"; запуск: perl <имя файла с расширением> Более сложный пример: Код #!/usr/bin/perl -w my $name = <>; # чтение со стандартного устройства ввода print "Hello, $name!\n"; И совсем сложный пример: Код #!/usr/bin/perl -w my @names; my $item = ''; do { print "Enter any name (or press enter if list finished): "; $item=<>; chomp; push @names, $item if $item; } while ($item); print "You entered following list:\n" . join("\n", @names, "") . "bye\n"; |
| парабеллум |
18.10.2007, 8:19
Сообщение
#2
|
![]() Пользователь Группа: Пользователи Сообщений: 330 Регистрация: 19.8.2007 Из: Киефф Пользователь №: 17 479 |
интересно. Надо как-нить этим заняцо
-------------------- Si vis pacem, para bellum
Если бы мы задались вопросом, кто сильнейшие люди в нашей культуре, логично было бы ответить – младенцы. Младенцы правят, сами же оставаясь неподвластными. |
| afterstep |
18.10.2007, 10:18
Сообщение
#3
|
|
Пользователь Группа: Активисты Сообщений: 5 336 Регистрация: 14.3.2005 Пользователь №: 2 413 |
вообще-то язык наиболее "удобен" для обработки текстов, ну и для сетевого/веб программирования. То есть - математикам не совсем подходит
Под виндой - многие из полезных возможностей отсутствуют, или ну очень уж "упрощены". Сам по себе язык - прост - но: 1) существует несколько "стилей" написания программ, и текст программы не всегда "читаем" для людей несведущих 2) работа с памятью - максимально упрощена, и пользователь этим "прямо" управлять не может - что в некоторых случаях может приводить даже к сбоям системы 3) "логические" ошибки - то есть когда синтаксический разбор проходит нормально, и программа выполняется - но работает жутко медленно и жрет вагон памяти - допускаются очень часто, причем не только новичками. -- Но, скажем, для того же "архив прошерстить, что-то похожее на "@#$%@" найтить", или "по логам пробежаться, посмотреть чего и как" - язык идеален например, антиспамовкая система spamassasin реализована на перле. Много сайтов в нете - реализовано на перле. -- В общем - дело вкуса, но инструмент мощный, и есть в каждой *nix системе - то есть всегда "под рукой". Часто админские проблемы решать помогает |
| afterstep |
8.11.2007, 17:16
Сообщение
#4
|
|
Пользователь Группа: Активисты Сообщений: 5 336 Регистрация: 14.3.2005 Пользователь №: 2 413 |
прислали мне "картинку зачетную".... на поздравление с "днем революции"....
Я вначале не понял - потом, после просмотра новостей - дошло.... Ну, не столько картинка понравилась - сколько она есть пример "удобства работы со строками в перле". Может, и неудачный пример, мож, кто из перловиков меня поправит - дескать, можно и по другому-то сделать... в общем - текст программы, позволяющий просмотреть картинку.... Код #!/usr/bin/perl -w my ($zero, $underl); while ( my @lst = split /\s+/, <DATA>) { print "0"x$zero . "_"x$underl while ( ($zero, $underl, @lst) = @lst ); print "\n"; } exit 0; __DATA__ 20 2 36 0 22 3 33 0 25 5 28 0 29 5 24 0 32 5 21 0 34 5 19 0 14 10 12 5 17 0 12 11 15 5 15 0 10 11 19 4 14 0 9 10 22 5 12 0 7 11 24 5 11 0 5 11 2 2 23 5 10 0 4 11 1 5 23 5 9 0 6 7 4 6 22 4 9 0 7 4 8 6 20 5 8 0 21 6 18 5 8 0 22 6 17 5 8 0 24 6 15 5 8 0 26 6 13 5 8 0 27 7 11 5 8 0 29 6 9 5 9 0 31 6 6 6 9 0 18 2 13 6 3 6 10 0 16 6 12 13 11 0 15 9 12 2 2 6 12 0 13 5 1 9 8 8 14 0 11 4 6 21 2 1 13 0 8 6 10 16 1 7 10 0 7 6 17 4 8 6 10 0 7 5 32 3 11 0 58 0 58 0 Для пояснения "емкости" перла - логику прокомментируем построчно: Код #!/usr/bin/perl -w Типичный заголовок для текстовых исполняемых файлов в системах *nix. Для windows - сие не обязательно, нои не повредит. В этой строке указывается путь к интерпретатору, который исполнит скрипт. Ключ командной строки "-w" - указывает интерпретатору, что нужно "жестко" проверять синтаксис. Если так попроще обьяснить - проявляется в том, что не позволяет использоватьпеременных без предварительного их обьявления. Код my ($zero, $underl); Обьявление рабочих переменных. Код while ( my @lst = split /\s+/, <DATA>) { Очень "многоплановая" строка. Обьявляется массив @lst, причем локально - доступен только внутри данного цикла. И массиву при "обьявлении" (инициализации) присваиваются значения. DATA - псевдо-файл данных, то есть значения, записанные после директивы __DATA__. Поскольку при чтении из файла возвращается строка, а нам нужны цифры - командой split эта строка разбивается на массив значений, причем конструкция /\s+/ читается как "считать разделителями значений любое количество последовательных пробелов" Код print "0"x$zero . "_"x$underl while ( ($zero, $underl, @lst) = @lst ); Тоже "многоплановая" строка. Особенность перла - условие не обязательно писать перед блоком исполнения - можно и после него. В таком случае интерпретатор вначале проверяет условие в правой части строки - и, если условие выполнено - исполняет оператор (блок операторов) в левой части строки. То есть - строку можно читать "по-человечески": - печатать $zero нулей и $underl символов "_" пока из массива @lst возможно получить пару чисел - особенность - "списковое присвоение". Первій (нулевой) элемент массива попадает в $zero, второй (или первый, если считать от нуля) - в $underl, остальной же "хвост" массива - записивается обратно в тот же массив. То есть таким способом мы, получив первую пару значений из массива - еще и удаляем эти два значения из массива. Код print "\n"; Строка закончиласть. Перевод каретки на новую строку. -- то есть реально - вся логика программы уместилась в 3 строчки.... Наваять аналог на паскале, что ли? чтоб для сравнения? |
| deviljohnson |
13.11.2007, 8:34
Сообщение
#5
|
![]() Пользователь Группа: Активисты Сообщений: 650 Регистрация: 13.6.2007 Из: Москва Пользователь №: 16 928 |
Да уж, картинка точно зачетная)))., Правда сегмент DATA не сильно проще создать, чем вручную такую картинку нарисовать))).
ЗЫ. На паскакале я, например, мало пойму)) Сообщение отредактировал deviljohnson - 13.11.2007, 8:35 -------------------- Билл- гей, т-с-с!
|
| afterstep |
13.11.2007, 9:54
Сообщение
#6
|
|
Пользователь Группа: Активисты Сообщений: 5 336 Регистрация: 14.3.2005 Пользователь №: 2 413 |
сегмент "дата" можно зачетно "кастрировать
Я его не набирал - я получил картинку, и сие чудовище "дата" сгенерил скриптом Для обработки строк - перл рулит адназначна собственно, сразу "дата" не сжимал из соображений - что народ паскакалевский текст увидеть захочет. Текст на паскале - не намного сложнее, но.... конструкция вида Код print "0"x$zero . "_"x$underl while ( ($zero, $underl, @lst) = @lst ); - будет значительно многословнее и утомительнее |
| deviljohnson |
13.11.2007, 9:54
Сообщение
#7
|
![]() Пользователь Группа: Активисты Сообщений: 650 Регистрация: 13.6.2007 Из: Москва Пользователь №: 16 928 |
Рулит, рулит, не поспоришь. А как картинку изначально создавали, интересно?
-------------------- Билл- гей, т-с-с!
|
| afterstep |
13.11.2007, 10:35
Сообщение
#8
|
|
Пользователь Группа: Активисты Сообщений: 5 336 Регистрация: 14.3.2005 Пользователь №: 2 413 |
ну - мне ее прислал виндовзятник
мож, в этой теме "поиграем" в создание текстовых картинок из графических файлов? |
| deviljohnson |
13.11.2007, 11:09
Сообщение
#9
|
![]() Пользователь Группа: Активисты Сообщений: 650 Регистрация: 13.6.2007 Из: Москва Пользователь №: 16 928 |
Можно попробовать)). Если время позволит, то почему нет?
-------------------- Билл- гей, т-с-с!
|
| afterstep |
13.11.2007, 12:32
Сообщение
#10
|
|
Пользователь Группа: Активисты Сообщений: 5 336 Регистрация: 14.3.2005 Пользователь №: 2 413 |
http://lunatic.no/img2aschtml.php
http://www.degraeve.com/img2txt.php Сообщение отредактировал afterstep - 13.11.2007, 12:43 |
| afterstep |
13.11.2007, 14:44
Сообщение
#11
|
|
Пользователь Группа: Активисты Сообщений: 5 336 Регистрация: 14.3.2005 Пользователь №: 2 413 |
не получилось
Сообщение отредактировал afterstep - 13.11.2007, 15:00 |
| deviljohnson |
14.11.2007, 9:33
Сообщение
#12
|
![]() Пользователь Группа: Активисты Сообщений: 650 Регистрация: 13.6.2007 Из: Москва Пользователь №: 16 928 |
Что именно не получилось? У меня одна картинка есть, ее только ручками до ума немного надо довести, и можно будет изголяться.
-------------------- Билл- гей, т-с-с!
|
| afterstep |
14.11.2007, 9:42
Сообщение
#13
|
|
Пользователь Группа: Активисты Сообщений: 5 336 Регистрация: 14.3.2005 Пользователь №: 2 413 |
пробовал аватарки форумчан перекодировать
|
| deviljohnson |
14.11.2007, 10:17
Сообщение
#14
|
![]() Пользователь Группа: Активисты Сообщений: 650 Регистрация: 13.6.2007 Из: Москва Пользователь №: 16 928 |
Типа вот. На птицу времени сейчас нет, а так вроде ничего получилось. Вот оригинал
Прикрепленные изображения Прикрепленные файлы
pic.txt ( 1.81 килобайт )
Кол-во скачиваний: 87-------------------- Билл- гей, т-с-с!
|
| afterstep |
14.11.2007, 11:11
Сообщение
#15
|
|
Пользователь Группа: Активисты Сообщений: 5 336 Регистрация: 14.3.2005 Пользователь №: 2 413 |
неплохо
только вот как бы форум приспособить для отображения сего? |
| deviljohnson |
14.11.2007, 11:33
Сообщение
#16
|
![]() Пользователь Группа: Активисты Сообщений: 650 Регистрация: 13.6.2007 Из: Москва Пользователь №: 16 928 |
Ну, кому интересно, может напрячься, и скачать файлик. По-моему.
-------------------- Билл- гей, т-с-с!
|
| afterstep |
14.11.2007, 12:29
Сообщение
#17
|
|
Пользователь Группа: Активисты Сообщений: 5 336 Регистрация: 14.3.2005 Пользователь №: 2 413 |
опять горбато вышло
видно, надо свой скрипт написать Сообщение отредактировал afterstep - 14.11.2007, 12:32 |
| deviljohnson |
14.11.2007, 12:44
Сообщение
#18
|
![]() Пользователь Группа: Активисты Сообщений: 650 Регистрация: 13.6.2007 Из: Москва Пользователь №: 16 928 |
А что такое? У меня все видится нормально
-------------------- Билл- гей, т-с-с!
|
| afterstep |
20.11.2007, 13:29
Сообщение
#19
|
|
Пользователь Группа: Активисты Сообщений: 5 336 Регистрация: 14.3.2005 Пользователь №: 2 413 |
xxx: я нечайно отцу систему гробанул думал убьёт
xxx: а он мне пока толко смску прислал xxx: с текстом xxx: f=fork(); if (f) kill (SIGKILL, f); xxx: что это значит?? yyy: сочувствую тебе чувак xxx: ??? yyy: тараса бульбу читал? xxx: да yyy: так вот это можно перевести как yyy: "я тебя породил, я тебя и убью"))) -- зачетный однострочник на перле породжает процесс, и из главного - его же и убивает |
| ak3n |
14.8.2009, 7:10
Сообщение
#20
|
|
Пользователь Группа: Пользователи Сообщений: 3 Регистрация: 31.5.2009 Пользователь №: 21 766 |
перл может и рулит, но python рулит в 2 раза больше =)
|
![]() ![]() |
|
Текстовая версия | Сейчас: 23.5.2012, 3:04 |