#!/usr/bin/perl # # 注意:假設全部都是全形字,包括空白字元。 # use encoding 'big5'; $sc = ""; $ec = ""; # 關鍵字 @m = ("浪淘盡", "風流人物", "赤壁"); # 讀入文章 @s = ; # 找出最大長度 map((length > $l ? $l = length : 0), @s); # 補成矩形 map($_ .= " " x ($l - length), @s); # 因須轉置,前後都加入色碼 foreach $m (@m) { $mm = $m; $mm =~ s/(.)/$sc$1$ec/g; map(s/$m/$mm/g, @s); } # 轉置 for (0 .. $#s) { @tmp = ($s[$_] =~ /\Q$sc\E.\Q$ec\E|./g); for (0 .. $#tmp) { $t[$_] .= $tmp[$_]; } } # 加入色碼 foreach $m (@m) { map(s/($m)/$sc$1$ec/g, @t); } # 印出結果 map(print("$_\n"), @t); # 資料檔 __DATA__ 大江東去,     浪     淘     盡     ,千古風流人物。            故            壘            西            邊            ,人道是:                三                國                周                郎                赤                壁                。