Perl : 「perl - 勝手に添削 - WEB+DB Press Vol.32 pp.94」より
http://68user.blog27.fc2.com/blog-entry-30.html
return $xml->{'totalResultsAvailable'}, "hits", ol(map { encode_utf8 li(a({href=>$_->{'ClickUrl'}}, $_->{'Title'})) } @{ $xml->{'Result'} } );
あれ、これってこんなに分かりにくいコードだったっけ?と考えることしばし。
元のページを開いて納得。
http://blog.livedoor.jp/dankogai/archives/50465942.html
return $xml->{'totalResultsAvailable'}, "hits", ol(map { encode_utf8 li(a({href=>$_->{'ClickUrl'}}, $_->{'Title'})) } @{ $xml->{'Result'} } );
インデントが全然違うじゃない!インデントが違ったら読みにくくなるのもあたりまえだよ。
この場合、最後の2行は、"ol(map"に掛かる部分なので、それよりもインデントを浅くすると、ブロック構造が分かりにくくなってしまう。最初のコードは、"encode"で始まる行が"map"と同じインデントになっているので、"map"と同列に"ol"の引数であるかのように見えるし、"} @{ $xml"で始まる行は、"ol"と同列に"return"の引数であるかのように見えてしまう。これでは混乱する。
ちょっと手を加えて、ol, li, a, hrefを目立たせてみた。個人的には、これの方が好みかなぁ。
return $xml->{'totalResultsAvailable'}, "hits", ol( map { encode_utf8 li( a( { href => $_->{'ClickUrl'}}, $_->{'Title'}))} @{ $xml->{'Result'}});
-
-
- -
-
それにしても括弧が多いな。Cleanで嘘プログラミングするとこうなるのか?
= get "totalResultsAvailable" xml +++ "hits" +++ (get "Result" xml --> map $ encode_utf8 o li o a o (\x = [Href $ get "ClickUrl" x ,Text $ get "Title" x]) --> ol)
・・・嘘っぽい。あ、型エラーだ。