Пропустить навигацию.
Главная

А на STDOUT - фиг с маслом!

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

Очередной кросс-пост с http://useunix.ru/forum/viewtopic.php?f=21&t=26.

Добрый день всем читателям данного форума! Очередной вечер - очередное воспоминание из прошлого(пусть я ещё не стар, но воспоминания меня уже преследуют): преподаватель по новому предмету, а точнее языку на доске пишет код "print 2, print 3, print 4", говорит: "апятитонет..." и говорит: "а что выведет PERL?"(года 3 прошло...) Да! он... гениальный и неповторимый! ОН перевернул с верх на голову наше понимание "языка", переведя его из состояния "Си" в состояние "Do you speek english?". Ну, мы написали - каждый, что думал(а точнее мог думать), и, почти наверняка, оказался не прав! Да!!! это вам не бубль гум! это Patalogical Eclectic Rubbish Lister! гениальная вещь для повседневных проблем. На кой? ну а ты представь: надо тебе найти все документы начинающиеся с "июнь" - любого регистра, возможно "iyun" или чего ещё по-хлеще и все перевести в "ию№1" - мне так удобно представлять этот месяц(так удобней) и вот вы пишите сорцу на 50 строк на "СяХ", что решают эту проблему, а паренёк, что на перл писал в 3 строчки уложился... "Что за фигня, как так?" - негодуете вы и идёте к нему тяжёлым, гулким шагом. "Так, open - ну открыл, ага вот этот файл. А тут что? что за крокозябра? юстос-алексус... что за шифровка? он издевается!? close - наверное, закрывает файл". Вот так-то! "Ну ладно, это языка для ламаков" - кричите вы и требуете проверки по скорости. Он ваc сделал(ну или одинаково - хотя это вряд ли)... Вы понимаете, что в этой жизни вы что-то упустили.

На самом деле вы упустили немногое: всего-то разницу компилируемого-кода(коим является Си) с интерпретируемым(чем является perl). А что лучше? тема стара, но до сих пор не понять "кто есть кто"... Но одно вам понятно: похоже Си- не выход. Особо, если надо сделать быстро и для 1ого запуска. Собственно примерно этой задачей задался Larry Wall, когда создавал язык perl. С тех пор много воды утекло, но перл до сих пор жив, а если и нет, то всё-равно alma mater помнить нужно... Лично я до сих пор на нём пишу и пхп освоил за 2 дня после него, как похожий.

И что же вывел всё-таки запрос "print 2, print 3, print 4"? Ни что иное как "43121"! Почему так? Всё просто: начинаем с конца(как это часто бывает) печатаем "4", потом надо печатать "3" и "print 4", но "print 4" уже выполнился и вернул "1" - ну, мол "true", так и печатаем: "3", "1". Аналогично с двойкой...

Вот такой "волшебный" и своеобразный Perl. В заключении, хочу показать "калькулятор", написанный на perl:

 print eval while <>

все линуксоиды(+BSDшники) могут проверить его, набрав в консоли "perl", а после - эту строчку, после чего - ctrl+D(пустая строка), после чего впишите арифметическое выражение а ля "12+34*56" и нажмите enter - вот вам результат...