Forum Webscript.Ru

Программирование => Perl => Тема начата: dimfish от 15 Января 2002, 15:50:46

Название: консоль...
Отправлено: dimfish от 15 Января 2002, 15:50:46
Вопрос такой - выводится текст, в конце которого пишутся проценты, например:
лалалал - 11%
лалалал - 12%
лалалал - 13%
как можно сделать, чтобы последние три символа затирались - а их место стаивились новые три символа, т.е застопорить строку... Интересно и Dos и Unix варианты...
Название: консоль...
Отправлено: dimfish от 15 Января 2002, 16:16:33
под винду нашёл:

$CONSOLE=new Win32::Console(STD_OUTPUT_HANDLE);
$CONSOLE->Attr($FG_YELLOW | $BG_BLUE);
$CONSOLE->Write("Hello, worlds!");

осталось под *nix....
Название: консоль...
Отправлено: vladsu от 17 Января 2002, 02:24:29
Hi.

не совсем понял что ты хочешь, сужу по модулю который для винды используешь, может тебе подойдет Term::Cap ето для *nix, для винды не уверен, а вот POSIX::Termios, думаю заменит оба.

Если конечно это то.
Название: консоль...
Отправлено: dimfish от 17 Января 2002, 10:57:20
vladsu
Term::Cap
неа немного не то....

а вот POSIX::Termios, думаю заменит оба
Спасибо - посмотрю на юнихе ;)
на Active Perl его нету, а под винду я нашёл уже Win32::Console...
Название: консоль...
Отправлено: dimfish от 17 Января 2002, 11:02:13
vladsu
а вот, что мне надо было:

$CONSOLE=new Win32::Console(STD_OUTPUT_HANDLE);
$CONSOLE->Attr($FG_GREEN | $BG_BLACK);

...

open F,">$name";
binmode F;

$resp=$ua->request($req,\\&data,4096);

close F;

sub data{
my($data, $response, $protocol) = @_;
$length+=length($data);
print F $data;
$CONSOLE->Cursor(0,23,0,0);
my $size=$response->as_string();
$size=~s#.*Content-Length: (\\d*).*#$1#si;
printf "loading $name %7.2fk   of %7.2fk - %2.2f%%",$length/1024,$size/1024,$length/$size*100;
}
Название: консоль...
Отправлено: Oak от 17 Января 2002, 14:44:05
Под Unix можно
print "\\rtext - xx%";
Это возврат каретки без перевода строки.
Название: консоль...
Отправлено: dimfish от 18 Января 2002, 12:47:47
Oak
Thx.