Страница 1 из 1

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

Добавлено: 2009-11-30 17:55:48
versen
Всем добрый день!
Может кто знает, как вывести отсчет секунд.
Сейчас примерно так:
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 получается длинная портянка.
Как сделать, чтобы отсчет времени был в одной строке?

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

Добавлено: 2009-11-30 17:59:18
ProFTP
versen писал(а): Как сделать, чтобы отсчет времени был в одной строке?
чтобы весь скрипт был в одну строку?
а зачем?

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

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

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

#./test.pl
3
2
1

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

Добавлено: 2009-11-30 18:12:00
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 

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

Добавлено: 2009-11-30 18:16:12
versen
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"..

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

Добавлено: 2009-11-30 18:19:54
ProFTP
т.е. чтобы было печатало 3, а потом просто 3 очистилась и появилась 2??
если, да, то никак нельзя в консоле...

можете посмотреть Сишные VESA

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

Добавлено: 2009-11-30 18:22:10
versen
ProFTP писал(а):т.е. чтобы было печатало 3, а потом просто 3 очистилась и появилась 2??
Да.
если, да, то никак нельзя в консоле...
Жаль..

Но Спасибо!

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

Добавлено: 2009-11-30 18:36:38
ProFTP

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

Добавлено: 2009-11-30 23:12:55
thefree
поставьте перед выводам system("clear") если виндус то cls

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

Добавлено: 2009-12-01 6:24:51
zg
versen писал(а):print "$i\n";
замени на

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

print "$i\r";

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

Добавлено: 2009-12-01 9:03:03
thefree
zg писал(а):замени на

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

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

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

Добавлено: 2009-12-01 10:35:02
versen
thefree писал(а):
zg писал(а):замени на

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

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

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

Добавлено: 2009-12-01 11:22:00
thefree
кроме как через очистку, не вижу другой возможности.

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

Добавлено: 2009-12-01 11:52:17
zg
thefree писал(а):т.к. увидел только конечный результат а промежуточный не выводился.
перл буферизирует вывод, нужно рыть эту сторону.

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

Добавлено: 2009-12-01 11:58:57
ProFTP
в книге "perl за 24 часа"

были игры консольные, там была игра по-моему handman которая выводила в консоль, но я не понмю как там было, можешь посмотреть эту книгу...

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

Добавлено: 2009-12-01 13:29:36
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);
}
}

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

Добавлено: 2009-12-01 13:32:27
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);
       }
   }

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

Добавлено: 2009-12-01 14:17:45
versen
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);
       }
   }

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

Добавлено: 2009-12-01 14:30:30
thefree
Скажем так это не отключения буферизация.
2s2323 Спасибо, я даже и не подумал что можно так.