Htmlタグを preタグの中だけ下記の左側の文字から右側の文字にリプレースしてくれるPerlスクリプト
& : & " : " < : < > : >
#!/usr/bin/perl use warnings; use strict; my $flag = 0; while(<>){ chomp; $flag = 0 if m/^\<\/pre\>$/; if($flag){ s/&/&/g; s/\"/"/g; s/\</</g; s/\>/>/g; } s/^\s*$/ /; $flag = 1 if m/^\<pre.*?\>$/; print "$_\n"; }
preタグが単独で置かれた行をトリガーにして置換のON/OFFを切り替えてます。
例えばcodeタグをトリガーにするのであれば、
$flag = 1 if m/^\<code\>$/;
とすれば良いと思いますが、インデントを再現したかったので今回はpreタグにしました。
なお、置換のこつは、&を最初に置換することです。
s/&/&/g;
ちなみにこの部分↓
s/^\s*$/ /;
は、空行を入れるために空白文字を一発挿入してます。
brタグがお好みなら、下記のように書き換えればOKだと思います。
s/^\s*$/\<br \/\>/;
最後に、もちろんこの記事のソースも、プレーンテキストで書いた文章を今回紹介したPerlスクリプトで変換して投稿しております。