任意の文字の組み合わせ
Math::BaseCalc モジュールを使って 10 進数をアルファベットに変換すると、
$ perl -MMath::BaseCalc -le 'print Math::BaseCalc -> new(digits => ['A' .. 'Z']) -> to_base(26);'
BA
このように 26 -> BA になりますが、これが 26 -> AA となるようなモジュールはないのでしょうか?
0 (A) == 00 (AA) なので、基数変換ならば 26 -> BA で正しいのは分かります。
しかし、文字列的な変換方法を探しています。
別な言い方をすると、A-Z の組み合わせでできる文字列を順番に得たいと思っています。
すなわち、A, B, C, ..., Z, AA, AB, AC, ..., ZZ, AAA のような文字列です。
アルファベットならば範囲演算子 (..) を使って得られますが、任意の digits で同じような文字列を得ることができるようなモジュールはないのでしょうか? (例えば、0-9 A-Z a-z ならば 0, 1, 2, ..., 9, A, B, C, ..., Z, a, b, c, ..., z, 00, 01, 02, ...)
現在は拙作のサブルーチンを使っているのですが、もし定番のモジュールがありましたら、お教え頂きたいです。
ご回答よろしくお願い申し上げます。
お礼
出来ました!理想とするプログラムができあがって理解することも出来ました。 長々とお付き合いありがとうございました。 ケース2にしたかった理由は、変換される文字より変換後の文字の方が少なかったので、 テキストファイルが見やすくなると思ったのです。 ですが、作ってみると、ケース1の方が便利な理由が出来たので、このまま行きます。 本当にありがとうございました。 他の方も回答してくださっているようなので、そちらの方も勉強してみようと思います!