<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>prosconsnarpa1988のブログ</title>
<link>https://ameblo.jp/prosconsnarpa1988/</link>
<atom:link href="https://rssblog.ameba.jp/prosconsnarpa1988/rss20.xml" rel="self" type="application/rss+xml" />
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com" />
<description>ブログの説明を入力します。</description>
<language>ja</language>
<item>
<title>cdif v2.5</title>
<description>
<![CDATA[ <blockquote>cdif アップデートしました - </blockquote>昨年末に更新した <strong>cdif</strong> を修正しました。<h2>未修正部分の着色に対応</h2>自分では必要ないと思っているのですが、未修整部分の文字にも色を付けられるようにしました。また <code>--colormap</code> というオプションで、それぞれのフィールドの色を指定できるようになっています。デフォルトの設定はこう。cdif --cm 'COMMAND=SE,OMARK=CS,NMARK=MS' \     --cm '*TEXT=,*CHANGE=BDw,DELETE=APPEND=RDw'<code>--commandcolor</code>, <code>--markcolor</code>, <code>--textcolor</code> オプションで、フィールドに色を付けるかどうかを指示することもできます。<code>--cc</code>, <code>--mc</code>, <code>--tc</code> とも省略可。デフォルトでは <code>--notc</code> になっています。あ、<code>DELETE</code> がなかった…<h2>diff -t, -T に対応</h2><h2>その他、若干のバグ修正</h2><h1>ところで</h1>今回、<code>--colormap</code> オプションをテーブルに反映する部分のコードはこんな風になっています。if (@opt_colormap) {    map {        my $c = pop @$_;        map { $colormap{$_} = $c }        map { match_glob $_, keys %colormap }        @$_;    }    map { [ split /=/, $_, -1 ] }    map { split /,/ }    @opt_colormap;}自分で書いといて、なんだか Perl っぽくないコードだなあと時代を感じたりするわけですが、3行目だけ古風な感じなので List::Util の <code>reduce</code> を使って書き直そうかと思うと、これがどうもうまくいかないのですよ。次のプログラムを実行すると、<code>$hash{k1}</code>, <code>$hash{k2}</code> に v が入ってほしいのだけど、2番目は <code>undef</code> になってしまいます。my %hash;reduce {    $hash{$b} = $a;    $a;} qw(v k1 k2);print Dumper \%hash;<code>$a</code> は一度代入すると値を失うようで、<code>$a;</code> だけの行を削除すると動くし（この行は本来不必要）、代入する部分を <code>"$a"</code> にしても大丈夫。どうも perl5.12 に含まれる <code>reduce</code> のバグではないかと。<code>List::Util::PP</code> を使えば動作するし。なんとか使う方法はわかり、map と reduce だけのそれなりに趣のあるコードになりますが、動いたところで変な warning は出るし、無駄に可読性を下げるだけなので不採用でした。参考のために一応見せるとこんなです。use List::Util qw(reduce);no warnings;if (@opt_colormap) {    map {        reduce {            map { $colormap{$_} = "$a" } match_glob $b, keys %colormap;        } reverse @$_;    }    map { [ split /=/, $_, -1 ] }    map { split /,/ }    @opt_colormap;}     ...
]]>
</description>
<link>https://ameblo.jp/prosconsnarpa1988/entry-12150977913.html</link>
<pubDate>Sat, 16 Apr 2016 22:40:48 +0900</pubDate>
</item>
</channel>
</rss>
