如何用HTML标签替换终端控制字符?
my ($black,$red,$green,$reset) = ('^[[30m','^[[38m','^[[92m','^[[0m');
my $LogString = $red.'red'.$reset;
printf ("%s\n",$LogString);
$LogString =~s/$red/<font color="red">/g;
$LogString =~s/$reset/<\/font>/g;
printf HTML ("%s\n",$LogString);
答案 0 :(得分:4)
您需要确保正确转义正则表达式中的字符。否则,例如[
(^[[38m
)中的$red
等正则表达式元字符被认为是字符类的开头分隔符。
考虑改为:
$LogString =~s/\Q$red\E/<font color="red">/g;
$LogString =~s/\Q$reset\E/<\/font>/g;
\Q
和\E
分别禁用和重新启用正则表达式元字符。
有关详细信息,请参阅:http://perldoc.perl.org/perlre.html。