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

正規表現の文字を適切にエスケープする必要があります。それ以外の場合、たとえば( )などの正規表現メタ文字は、文字クラスの開始区切り文字と見なされます。[^[[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 に答える