IT Office Nishimiyahara

個人用スマホから商用プログラミングまでなんでもお任せ下さい

再帰呼出し型サブルーチン

      2015/02/04

ソースをコンパクトにまとめる一つの方法として、たぶん少なからず使われるのが「再帰呼出し」が可能なサブルーチンでしょう。僕は恐くてあまり使えませんが・・・。

なぜ恐いかというと、無限ループに陥りやすいからです。

「こんなもんだろう」という感じで「とりあえず実行」をしてしまうので、この手のサブルーチンは苦手なのです。そのおかげか知りませんが、強制終了は上手くなりました(自爆)

数少ない成果として、「数値の整形スクリプト」を作ってみました。これだとループさせてもよさそうなものですが、なんとなく。でも、結構シンプルにまとまっているでしょう?(自画自讃)

もともと「TestCGI Index」のバイト数表示用に作ってみたのですが、結構緊張しました。こちらは「1MB」を越えることは無い(と思う)ので、本当は再帰は必要ないのですけどね・・・。

ただ、この手の機能はよく使われると思うので、ライブラリがあると思うのですけど、全然把握してません。必要な機能を自分で作るのも勉強です(苦笑)

また、ディレクトリの検索にも「再帰呼出し」を使っていますが、この場合、「..(親ディレクトリ)」の処理を忘れると大変です。とほほさんの検索スクリプトを見ていなかったら、迷わず嵌っていた事でしょう(笑)

ちなみに、明らかに数値しか扱わない場合は正規表現を使えば簡単に整形できます。

sub divideNum{
my($num) = @_;
1 while $num =~ s/(d+)(d{3})/$1,$2/;
return $num;
}
変換部分は、とほほさんのラウンジで見たのを多少アレンジしたものですが、最初見たときには目から鱗が落ちました。正規表現を極めると面白そうです。

そんなわけで、上の「(自画自讃)」はかなりボケてます(爆)

ここから追記(2000/12/14)

「再帰呼出し」とは関係ないですが、数値の整形については「Perlメモ」の「数字を 3桁ごとにコンマで区切る」が、かなり詳しいです。

ソースコード

respo

respo link

ZenBackWidget

 - 情報技術について