我想在Perl脚本中改变死亡消息的颜色。 我目前正在使用Term::ANSIColor来更改我的脚本中的其他颜色。 我遇到的问题是一旦脚本死亡,它就无法将颜色重置为终端默认值,终端提示符的颜色则为在我的脚本中上次使用的颜色。 在这种情况下,它将其变为红色。
您是否有任何想法,如何使脚本死亡但仍然改变颜色返回?
以下是相关的代码块;
#!/usr/bin/perl
use strict;
use warnings;
require Term::ANSIColor;
use Term::ANSIColor;
print "Loading configuration file\n";
# Check if the specified configuration file exists, if not die
if (! -e $config_file_path) {
print color 'red';
die "$config_file_path not found!\n";
print color 'reset';
} else {
print color 'green';
print "$config_file_path loaded\n";
print color 'reset';
}
更新
代码可以运行,但现在我无法去除 die
语句中显示出错行号的部分。
Loading configuration file
/etc/solignis/config.xml not found!
at discovery.pl line 50.
通常我只需在die函数中添加一个换行符,就可以消除任何来自die的正常错误输出。 有什么想法为什么会这样?
更新2
根据你们所有人的建议,我将它拼凑在一起了。
print STDERR RED, "$config_file_path not found!";
die RESET, "\n";
看起来它运行正确。使用Term :: ANSIColor的常量1是我需要简化事情的完美选择。
\n
的作用。color
函数所做的只是返回一个控制字符,终端会将其解释为颜色更改,因此您正在使用连接将该字符包含在字符串中。 - Brian RoachTerm::ANSIColor qw(:constants);
的想法真是太棒了。谢谢。 - AtomicPorkchop\n
附加在末尾即可(我刚刚更新了这一点)。 - Brian Roach