2

如何用 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);
4

1 回答 1

4

您需要确保正确转义正则表达式中的字符。否则,正则表达式元字符(例如[in ^[[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。

于 2013-11-01T21:16:04.123 回答