go ahead... be a heretic PerlMonks

### Comment on

 Need Help??

Another "Silly use for Perl" entry.

Anonymous Monk asked for a method for incrementing mixed letters and numbers recently, which particular need is satisfied with Math::Base36. Can we do better? I guess, yes.

```use 5.10.0;
use Math::Base;

my \$begin = Math::Base->new(36, 1009, 1); # base, number, is_encoded
my \$end   = Math::Base->new(36, 1020, 1);
my \$c     = Math::Base->new(36, 42);

say \$c->encode(\$_) for \$begin .. \$end;

# 1009
# 100A
# 100B
# 100C
# ...
# 101X
# 101Y
# 101Z
# 1020

# also (with updated code below)
# my \$x = Math::Base->new(36, 46664); # 1008 in base36
# say ++\$x for 0..63; # output same as above

# Arithmetics with different encodings:

\$p = Math::Base->new(8,777,1); # decimal 511
\$z = Math::Base->new(36, 35);  # 'Z' as base36
say \$z * \$p;                   # 42735 (octal)
say \$p * \$z;                   # 'DST' (base36)

# Changing the string representation:

\$s = Math::Base->new(16,18);
say \$s;                        # 12
\$s->rebase(18);
say \$s;                        # 10
\$s += 3;                       # 13
\$s->rebase(2);
say \$s;                        # 10101

# Get decimal value:

\$xyz = Math::Base->new(64, 'XYZabc', 1);
say \$xyz->num;                 # 36013230438

Far from complete, but fun enough yet. For me, that is... ;-)

Update: Below is an updated version which handles negative numbers, implements missing operators and lets you define your own charset for baseX conversion, e.g. to calculate base3 with qw(a b c). Also, a method integer() is added which emulates use integer globally for all calculations, and some utility methods/functions.

Update: fixed some bugs

I'll eventually make it into a CPAN package proper.

perl -le'print map{pack c,(\$-++?1:13)+ord}split//,ESEL'

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":

• Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
• Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
• Read Where should I post X? if you're not absolutely sure you're posting in the right place.
• Posts may use any of the Perl Monks Approved HTML tags:
a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
• You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
 For: Use: & & < < > > [ [ ] ]
• Link using PerlMonks shortcuts! What shortcuts can I use for linking?

Create A New User
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (5)
As of 2018-07-21 08:05 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
It has been suggested to rename Perl 6 in order to boost its marketing potential. Which name would you prefer?

Results (445 votes). Check out past polls.

Notices?