Как я могу обновить значения на экране, не очищая его в Perl?

Я сэкономлю Вам время и скажу Вам, что нет никакого пути в надлежащем .net, версия 2.0 для получения объекта DateTime для другого часового пояса, отличающегося от того, на котором программное обеспечение работает (кроме UTC).

Однако, который не означает, нет способа сделать это за пределами .net. Смотрите здесь в классе TimeZoneInformation. Этот класс обертывает некоторый материал p/invoke к Победе O/S для получения информации часового пояса от O/S. Я успешно использовал его назад, когда 2.0 было новым, и это работало очень хорошо. Сайт я продолжал работать, должен был быть в состоянии показать каждую дату/время, локальную для пользователя, и должен был быть осведомлен о DST, и этот класс подошел для нас.

5
задан brian d foy 23 September 2009 в 15:56
поделиться

3 ответа

Для такого рода вещей мне нравится использовать Curses . Это просто не для Perl. :)

12
ответ дан 18 December 2019 в 07:10
поделиться

Вы говорите о том, чтобы получить больший контроль над тем, где что печатается на вашем экране? Тогда вы, вероятно, захотите проверить модуль Term :: Cap .

Бедняк может сделать это с одной строкой, используя \ r , чтобы перезаписать ту же строку.

while ($t>0) {
    # note no new line at the end of printf statement
    printf "\rHours: %d  Minutes: %d  Seconds: %d     ", $t/3600, ($t/60)%60, $t/60;
    sleep 5;
    $t -= 5;
}

EDIT Вот кое-что, что работает в моей системе. Возможности вашего терминала могут отличаться.

require Term::Cap;
$terminal = Tgetent Term::Cap { TERM => cygwin, OSPEED => 9600 };
$terminal->Trequire("up");  # move cursor up
$UP = $terminal->Tputs("up");
$t = 500;
while ($t > 0) {
    printf "Hour: %d    \n", $t/3600;
    printf "Minute: %d    \n", ($t/60)%60;
    printf "Second: %d    \n", $t%60;
    print $UP,$UP,$UP;
    sleep 5;
    $t -= 5;
}
14
ответ дан 18 December 2019 в 07:10
поделиться

Примерно так:

use Term::ANSIScreen qw(cls);
while(1) {
    cls;

    print "....";

    sleep 5;
}

Альтернативы "cls" можно найти в этом вопросе .

-4
ответ дан 18 December 2019 в 07:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: