perl - 如何在 perl 上删除或更改最后一次打印的显示?
问题描述
我试图做的是打印出一个字符串,然后经过几次背景检查,更改之前所说的字符串?
所以这是它最初的样子:
#
Loading design modules....please wait.
然后经过几次背景检查后,它将删除“正在加载设计模块....请稍候”。然后在不清除整个 CLI 屏幕的情况下将其更改为以下内容:
#
Design module loaded!
到目前为止,这是我的代码:
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
use feature 'say';
use feature 'switch';
use IO::Socket;
use Scalar::Util qw(looks_like_number);
use Term::ANSIScreen qw/:cursor :screen/;
$| = 1;
print "Loading design modules....please wait";
sleep(5);
say "Design module loaded!";
解决方案
用于savepos()
保存光标的位置并loadpos()
返回到该保存的位置。
这是第一次尝试:
#!/usr/bin/perl
use strict;
use warnings;
use feature 'say';
use Term::ANSIScreen ':cursor';
$| = 1;
savepos;
print "Loading design modules....please wait";
sleep 5;
loadpos;
say "Design module loaded!";
但是由于第二个字符串比第一个字符串短,我们最终会看到两个字符串的位:
Design module loaded!s....please wait
最简单的解决方案可能是在打印第二个字符串之前打印一串空格来覆盖第一个字符串。
#!/usr/bin/perl
use strict;
use warnings;
use feature 'say';
use Term::ANSIScreen ':cursor';
$| = 1;
savepos;
print "Loading design modules....please wait";
sleep 5;
loadpos;
print ' ' x 37;
loadpos;
say "Design module loaded!";
推荐阅读
- ethereum - StateAccessViolation:值必须是文字 - Vyper 以太坊智能合约
- python - 删除熊猫数据框中的重复项的问题
- reactjs - 反应本机设置
- c++ - 如何进入 C++ 容器
的 T 如果没有提供 Container::value_type? - usb-drive - 从 U 盘获取生产日期
- python - 无法在 google colab 上导入 pytorch_lightning
- azure-ad-b2c - 如何为 Azure AD B2C 电话登录添加“重新发送代码”
- python - 使用硒进行网页抓取时,我没有获得时间价值
- pipeline - Dask:构建和执行高效的管道
- python - 如何拟合 sinc 平方函数?