LINUX.ORG.RU

счетчик на perl в терминале, без перевода строки

 


0

2

Собственно есть следующий код, тупо выводящий счетчик от 0 до 100

print "Счетчик:";
for (my $i=0; $i <= 100; $i++) {
       print "$i\n";
       }

но... хотелось чтобы этот счетчик был в пределах одной строки с 0 позиции, без каких либо движений курсора, подозреваю что вместо escape-последовательности «\n» которая чисто для примера указано, нужно использовать нечто другое сдвигающее курсор влево на этой строке, но что-то не могу найти внятной документации по этому поводу. Такое ваще возможно в перле в режиме терминала?

если только сначала строки - достаточно \r, как показали выше. если в произвольном месте - \e[s перед выводом для сохранения позиции курсора, \e[u - после для восстановления

ananas ★★★★★ ()

Python по дефолту есть во всех системах. Пишите на нём. Он прост, написание кода быстро, доки - одни из лучших. Кому, вообще, нужен perl в 2016 при наличии python, ruby, lua, go, nodejs...

menangen ★★★★★ ()
Последнее исправление: menangen (всего исправлений: 1)
Ответ на: комментарий от menangen

Из-за пустяковой проблемы в готовом скрипте учить очередной язык, который ничем существенно не лучше. Мсье знает толк.

JaneDoe ()
Ответ на: комментарий от JaneDoe

Как раз таки лучше по всем статьям. А пустяковая задача должна стать мотиватором к переходу.

menangen ★★★★★ ()

Я думал, тут про тот самый однострочник, а вы… эхх…

INFOMAN ★★★★★ ()
Ответ на: комментарий от menangen
[disarmer@home❱❱~]% python -v 
zsh: command not found: python
[disarmer@home❱❱~]% python2 -v
zsh: command not found: python2
[disarmer@home❱❱~]% perl -v
This is perl 5, version 24, subversion 0 (v5.24.0) built for x86_64-linux-thread-multi

Ну и конечно https://disarmer.tk/ln/?memstat

disarmer ★★★ ()
Последнее исправление: disarmer (всего исправлений: 1)
Ответ на: комментарий от menangen

Как раз таки лучше по всем статьям. А пустяковая задача должна стать мотиватором к переходу.

Ну так покажи же, насколько изящнее задача топикстартера решается на питоне. Настолько, чтобы wow-эффект и все бросились в питон.

JaneDoe ()
Ответ на: комментарий от menangen

Brainfuck изучается за минуту. Это не повод на него переходить. Видимо, внятной аргументации в пользу питона не будет. Впрочем, как и всегда.

JaneDoe ()
Ответ на: комментарий от JaneDoe

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

menangen ★★★★★ ()
Ответ на: комментарий от menangen

очевидно...

Очевидно, что в перле есть те же if, for и while, и ничто, кроме собственного идиотизма/гениальности, не заставляет писать в стиле того самого однострочника.

Общеизвестно, что CPAN содержал тысячи модулей уже тогда, когда про питон знал только Гвидо и, возможно, его бабушка.

По мнению экспертов с мировым именем, популярность питона объясняется лишь модой. Кроме того, в моей местности и ближайшем райцентре количество вакансий, связанных с питоном, полностью совпадает с таковым для перла, равно как и для кобола, бейсика и хаскеля. Их нет. А вот на PHP/JS мне удавалось устроиться. например.

JaneDoe ()
Ответ на: комментарий от menangen

Найти работу по перл - это не просто, найти работу на питон - элементарно.

Найти работу в макдаке еще проще

disarmer ★★★ ()
Ответ на: комментарий от menangen

Python по дефолту есть во всех системах. Пишите на нём.

в нем нет удовольствия от программирования.

chinarulezz ★★★★★ ()
Ответ на: комментарий от JaneDoe

Перл:

$| = 1;

for my $i (1..5) {
    print "\r$i";
    sleep 1;
}

Питон:

from __future__ import print_function
import time
import sys

for i in range(1, 6):
    print("\r{}".format(i), end="")
    sys.stdout.flush()
    time.sleep(1)

Никакого wow-эффекта. Остаёмся в Перле, мужики.

evbogdanov ()
Ответ на: комментарий от menangen

Найти работу по перл - это не просто

/me ехидно улыбнулся.

KennyMinigun ★★★★★ ()
Ответ на: комментарий от chinarulezz

в нем нет удовольствия от программирования.

Кстати, да. Можно провести аналогию с ящиком инстументов. Perl — это дорогой (сложно выучить) и широкий (много разных средств самовыражения) набор. А Python — самый обычный ящик с базовыми инструментами по довольно низкой цене.

Когда программируешь на Perl, то получаешь удовольствие от качества исполнения, удобности и точности инструментов. Python же, как ни как, тоже выполняет ту же самую работу, вот только удобство инструмента не является приоритетом, ведь главное — дешевизна, чтоб покупали больше.

KennyMinigun ★★★★★ ()
Ответ на: комментарий от JaneDoe

Ну и что, что он содержал. Главное, что сейчас он слил по количеству программного обеспечения. Для python написано больше библиотек, чем на перл, и даже больше, чем на си или java. Только npm обогнал по количеству пакетов, но там пакеты создают на каждый чих.

menangen ★★★★★ ()
Ответ на: комментарий от KennyMinigun

Какие-то аналогии из разряда «почувствуй себя ылитой». Ещё скажите, что perl православный, а питонятина типа змея и ближе к сатане, ей богу, смешно.

menangen ★★★★★ ()
Ответ на: комментарий от menangen

Ещё скажите, что perl православный, а питонятина типа змея и ближе к сатане, ей богу, смешно.

Ларри-Волл-упаси такое сказать! :)

А если серьезно — то аналогии сосут. Хотел выразить собственное мнение, а получилось недоразумение.

KennyMinigun ★★★★★ ()
Последнее исправление: KennyMinigun (всего исправлений: 2)
Ответ на: комментарий от menangen

Точно, ubuntu, debian, centos и еще пара дистров, о которых никто не слышал - это все системы. Учитывая что у питона три не совсем совместимых ветки, шансы найти в случайной системе нужный питон уменьшаются

disarmer ★★★ ()
Ответ на: комментарий от menangen

Количество не означает качества. Покажи аналог metacpan'у. Или NYTProf. Уж не говоря о регэкспах... наверное pcre предложишь.

chinarulezz ★★★★★ ()

С удовольствием прочитал ваш срач, на тему какой язык сосет, а какой нет, с ностальгией вспомнил ru.os.cmp :-)

Подскажите ещё, где таки можно взять список escape-последовательностей, для использования при выводе в PERL-е? Простое гугленье приводит к странным статьям, примеры в которых как бы не работают.

karasic ()
Ответ на: комментарий от karasic

Да вялый срач. Собственно, я ничего против питона не имею, язык как язык, просто не интересный ничем. Но блин, когда по любому поводу набегают фанатики и начинают склонять всех в свою веру — это бесит. Будь они хоть питонисты, хоть свидетели, хоть из церкви Петросяна.

JaneDoe ()
Ответ на: комментарий от karasic

Подскажите ещё, где таки можно взять список escape-последовательностей

Собственно к перлу оно не относится никак, это фича терминала; кроме того, оно не слишком переносимо. Но если очень хочется, man console_codes.

JaneDoe ()
Ответ на: комментарий от karasic

Для вывода цветных сообщений используй Term::ANSIColor

annulen ★★★★★ ()
Ответ на: комментарий от disarmer

Справедливости ради у перла тоже уже две несовместимые ветки.

loz ★★★★★ ()
Ответ на: комментарий от menangen

А ты много на перле собственно писал, или все мнение основано на слухах друга знакомого твоего коллеги?

loz ★★★★★ ()
Ответ на: комментарий от chinarulezz

Уж не говоря о регэкспах... наверное pcre предложишь

Кстати, эта тема уже устарела, есть современные языки где регекспы не нужны.

loz ★★★★★ ()
Ответ на: комментарий от loz

Регекспы нужны не для языка, а для решаемой задачи.

ovax ★★ ()
Ответ на: комментарий от loz

И что могут предложить взамен эти «современные» языки?

chinarulezz ★★★★★ ()
Ответ на: комментарий от JaneDoe

Смысл в том, что нужно быть гибким. И мигрировать на более лучшие инструменты. Более простые в работе и более удобные. Вот на примере питона и руби я это и описываю. Что perl банально неудобен в 2016 году, у perl куча минусов, один из которых упоротый синтаксис. А так, я поддерживаю не только питонистов, но и рубистов и lua, т.к. это хорошие языки. Те же Groovy или D можно использовать в тех же задачах, что и perl, и профита будет больше: скорость, читабельность. Большие проекты писать можно не напрягаясь.

menangen ★★★★★ ()
Ответ на: комментарий от loz

Не много, но дописывал форумные движки в мохнатом 99-ом, perl это просто не для людей, он для роботов. Т.е. Ты пишешь код ради машины. Не ради себя, или других программистов - они вообще неделями въезжать будут в код на perl.

menangen ★★★★★ ()
Ответ на: комментарий от loz

Справедливости ради у перла тоже уже две несовместимые ветки.

Ну и для полной справедливости - Ларри позиционирует Перл 6 как отдельный язык.

anonymous ()
Ответ на: комментарий от menangen

... у perl куча минусов, один из которых упоротый синтаксис. ...

Эпично!

Дебильней чем у питона, пожалуй, только синтаксис КолорФорт.

anonymous ()
Ответ на: комментарий от menangen

один из которых упоротый синтаксис

например? хуже, чем табы?

false ★★★★★ ()
Ответ на: комментарий от menangen

Шо, опять?

Смысл в том, что нужно быть гибким. И мигрировать на более лучшие инструменты

Да мне хватает и гибкости, и языков для всех моих задач. Нужно обработать текст — возьму awk или perl. Склеить пару программ — шелл или тот же перл. Что-то низкоуровневое и/или критичное по времени — C++, пусть даже в стиле C, ибо zero overhead. Если я понятия не имею, как решать задачу, помогает Lisp. Я знаю, когда мне, может понадобится, скажем, Erlang. Я знаю, что Lua хороша как встроенный язык. Мне, в общем, интересен Ruby, хоть он для меня и слишком японский. Я знаю ниши PHP и JS, Java и С#, ассемблеров и фортов.

А питон... Пока видел только аргументы в стиле «миллионов мух», что объяснимо низким порогом вхождения. Бейсик 2.0, простенький, скучный язычок с упоротым синтаксисом(да, я опять про табы). По сравнению с тем же перлом, например, он слишком многословен, даже если на перле писать в нормальном, общечеловеческом стиле. Примерно так же, как паскаль vs С. Справедливости ради, есть, в нем и отдельные вкусные фишки, вроде list comprehension и функциональщины.

Короче говоря, я знаю питон на уровне, достаточном для практического применения. Вот только я не хочу его применять, если есть множество ему альтернатив.

JaneDoe ()
Ответ на: комментарий от false

А в чём проблема «табов», которые пробелами обозначены? Я и на swift и на JavaScript также пишу табами и стараюсь не писать ; и {} Это, вообще-то проще и читается легче - меньше знаков, быстрее мозг анализирует код и плюс ошибиться шансов меньше.

menangen ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.