Отсчет секунд на perl

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
versen
рядовой
Сообщения: 24
Зарегистрирован: 2007-04-09 11:34:34
Откуда: из Ленинграда
Контактная информация:

Отсчет секунд на perl

Непрочитанное сообщение versen » 2009-11-30 17:55:48

Всем добрый день!
Может кто знает, как вывести отсчет секунд.
Сейчас примерно так:
test.pl

Код: Выделить всё

#!/usr/bin/perl -w
use strict;
countdown(3);
sub countdown
   {
    for (my $i=$_[0];$i>0;$i--)
       {
        print "$i\n";
        sleep(1);
       }
   }
Каждую секунду курсор переходит на новую строку и при кол-ве секунд больше 60 получается длинная портянка.
Как сделать, чтобы отсчет времени был в одной строке?
Fuck you, Spielberg! Непонятно же...

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Отсчет секунд на perl

Непрочитанное сообщение ProFTP » 2009-11-30 17:59:18

versen писал(а): Как сделать, чтобы отсчет времени был в одной строке?
чтобы весь скрипт был в одну строку?
а зачем?
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

versen
рядовой
Сообщения: 24
Зарегистрирован: 2007-04-09 11:34:34
Откуда: из Ленинграда
Контактная информация:

Re: Отсчет секунд на perl

Непрочитанное сообщение versen » 2009-11-30 18:03:07

ProFTP писал(а):
versen писал(а): Как сделать, чтобы отсчет времени был в одной строке?
чтобы весь скрипт был в одну строку?
а зачем?
Нет... Скрипт по-фигу сколько строк..
Нужно, чтобы результат выполнения, т.е. отсчет секунд, был в одной строке...
А сейчас он печатает так:

Код: Выделить всё

#./test.pl
3
2
1
Fuck you, Spielberg! Непонятно же...

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Отсчет секунд на perl

Непрочитанное сообщение ProFTP » 2009-11-30 18:12:00

Код: Выделить всё

#!/usr/bin/perl -w
use strict;
countdown(3);
sub countdown
   {
    for (my $i=$_[0];$i>0;$i--)
       {
        print "$i ";
        sleep(1);
       }
   }

Код: Выделить всё

./perl.pl
3 2 1 
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

versen
рядовой
Сообщения: 24
Зарегистрирован: 2007-04-09 11:34:34
Откуда: из Ленинграда
Контактная информация:

Re: Отсчет секунд на perl

Непрочитанное сообщение versen » 2009-11-30 18:16:12

ProFTP писал(а):

Код: Выделить всё

#!/usr/bin/perl -w
use strict;
countdown(3);
sub countdown
   {
    for (my $i=$_[0];$i>0;$i--)
       {
        print "$i ";
        sleep(1);
       }
   }

Код: Выделить всё

./perl.pl
3 2 1 
Нет. Не так.
Надо чтобы при запуске скрипта появлялась 3. Через секунду тройка менялась на "2".. далее двойка менялась на "1"..
Fuck you, Spielberg! Непонятно же...

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Отсчет секунд на perl

Непрочитанное сообщение ProFTP » 2009-11-30 18:19:54

т.е. чтобы было печатало 3, а потом просто 3 очистилась и появилась 2??
если, да, то никак нельзя в консоле...

можете посмотреть Сишные VESA
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

versen
рядовой
Сообщения: 24
Зарегистрирован: 2007-04-09 11:34:34
Откуда: из Ленинграда
Контактная информация:

Re: Отсчет секунд на perl

Непрочитанное сообщение versen » 2009-11-30 18:22:10

ProFTP писал(а):т.е. чтобы было печатало 3, а потом просто 3 очистилась и появилась 2??
Да.
если, да, то никак нельзя в консоле...
Жаль..

Но Спасибо!
Fuck you, Spielberg! Непонятно же...

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Отсчет секунд на perl

Непрочитанное сообщение ProFTP » 2009-11-30 18:36:38

Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
thefree
лейтенант
Сообщения: 980
Зарегистрирован: 2008-12-29 9:23:19
Откуда: Весёлая Страна

Re: Отсчет секунд на perl

Непрочитанное сообщение thefree » 2009-11-30 23:12:55

поставьте перед выводам system("clear") если виндус то cls
Не судите меня строго, Я не волшебник, а только учусь!
http://planetbsd.ru - RSS-агрегатор *BSD по Рунету

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Отсчет секунд на perl

Непрочитанное сообщение zg » 2009-12-01 6:24:51

versen писал(а):print "$i\n";
замени на

Код: Выделить всё

print "$i\r";

Аватара пользователя
thefree
лейтенант
Сообщения: 980
Зарегистрирован: 2008-12-29 9:23:19
Откуда: Весёлая Страна

Re: Отсчет секунд на perl

Непрочитанное сообщение thefree » 2009-12-01 9:03:03

zg писал(а):замени на

Код: Выделить всё

print "$i\r";
Может я что-то не так делал, т.к. увидел только конечный результат а промежуточный не выводился.
Не судите меня строго, Я не волшебник, а только учусь!
http://planetbsd.ru - RSS-агрегатор *BSD по Рунету

versen
рядовой
Сообщения: 24
Зарегистрирован: 2007-04-09 11:34:34
Откуда: из Ленинграда
Контактная информация:

Re: Отсчет секунд на perl

Непрочитанное сообщение versen » 2009-12-01 10:35:02

thefree писал(а):
zg писал(а):замени на

Код: Выделить всё

print "$i\r";
Может я что-то не так делал, т.к. увидел только конечный результат а промежуточный не выводился.
Да, я так с самого начала и пробовал... выводится только конечный резултат.
Fuck you, Spielberg! Непонятно же...

Аватара пользователя
thefree
лейтенант
Сообщения: 980
Зарегистрирован: 2008-12-29 9:23:19
Откуда: Весёлая Страна

Re: Отсчет секунд на perl

Непрочитанное сообщение thefree » 2009-12-01 11:22:00

кроме как через очистку, не вижу другой возможности.
Не судите меня строго, Я не волшебник, а только учусь!
http://planetbsd.ru - RSS-агрегатор *BSD по Рунету

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Отсчет секунд на perl

Непрочитанное сообщение zg » 2009-12-01 11:52:17

thefree писал(а):т.к. увидел только конечный результат а промежуточный не выводился.
перл буферизирует вывод, нужно рыть эту сторону.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Отсчет секунд на perl

Непрочитанное сообщение ProFTP » 2009-12-01 11:58:57

в книге "perl за 24 часа"

были игры консольные, там была игра по-моему handman которая выводила в консоль, но я не понмю как там было, можешь посмотреть эту книгу...
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

s2323
проходил мимо

Re: Отсчет секунд на perl

Непрочитанное сообщение s2323 » 2009-12-01 13:29:36

#!/usr/bin/perl -w
$| = 1; #no buf

use strict;
countdown(3);
sub countdown
{
for (my $i=$_[0];$i>0;$i--)
{
print "$i\r"; # \r
sleep(1);
}
}

s2323
проходил мимо

Re: Отсчет секунд на perl

Непрочитанное сообщение s2323 » 2009-12-01 13:32:27

Код: Выделить всё

#!/usr/bin/perl -w
$| = 1; #no buf

use strict;
countdown(3);
sub countdown
   {
    for (my $i=$_[0];$i>0;$i--)
       {
        print "$i\r"; # \r
        sleep(1);
       }
   }

versen
рядовой
Сообщения: 24
Зарегистрирован: 2007-04-09 11:34:34
Откуда: из Ленинграда
Контактная информация:

Re: Отсчет секунд на perl

Непрочитанное сообщение versen » 2009-12-01 14:17:45

s2323 писал(а):

Код: Выделить всё

#!/usr/bin/perl -w
$| = 1; #no buf

use strict;
countdown(3);
sub countdown
   {
    for (my $i=$_[0];$i>0;$i--)
       {
        print "$i\r"; # \r
        sleep(1);
       }
   }
:good:
Болшой Thanks! То, что надо.. .Только
поставил после

Код: Выделить всё

 
sub countdown
   {


В итоге:

Код: Выделить всё

#!/usr/bin/perl -w

use strict;

countdown(4);

sub countdown
   {
$| = 1; #no buf

    for (my $i=$_[0];$i>0;$i--)
       {
        print "$i\r";
        sleep(1);
       }
   }
Fuck you, Spielberg! Непонятно же...

Аватара пользователя
thefree
лейтенант
Сообщения: 980
Зарегистрирован: 2008-12-29 9:23:19
Откуда: Весёлая Страна

Re: Отсчет секунд на perl

Непрочитанное сообщение thefree » 2009-12-01 14:30:30

Скажем так это не отключения буферизация.
2s2323 Спасибо, я даже и не подумал что можно так.
Не судите меня строго, Я не волшебник, а только учусь!
http://planetbsd.ru - RSS-агрегатор *BSD по Рунету