19990701 -> 1999/07/01

Perlって良くも悪くもTMTOWTDI精神に則ってるので、
タイトルのような変換を行おうと思ったときに色々実装方法がありますよね。

まず思いつくのがsubstrかな

 my $date = '19990701';
 $date = substr($date,0,4) . '/' . substr($date,4,2) . '/' . substr($date,6,2);

あんまり美しくないよね。
じゃ正規表現

 $date =~ s|(....)(..)(..)|$1/$2/$3|;

うん、これがスタンダード?
正規表現嫌いだ!っていう人はこんなのも有りかな。

 $date = join '/' , unpack "A4A2A2" , $date;

いやぁ、同じことしたいだけなのに色々あるね。
そして一番エレガントなのはこれっすか?

 substr($date,4,2) =~ s|(..)|/$1/|;

substrが左辺値として有効なのを利用してます。
んー、実際の現場ではどれを選択するのか。
一番可読性高いのはどれなのか?

その辺考えながら楽しく実装するのがPerlの醍醐味(?)ですよね。