The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
BaseCnv.pm 4371
Build.PL 13
CHANGES 016
META.yml 23
Makefile.PL 13
README 1135
bin/cnv 00
7 files changed (This is a version diff) 58131
@@ -1,9 +1,10 @@
-# 3159mLT - Math::BaseCnv.pm created by Pip Stuart <Pip@CPAN.Org> to CoNVert between arbitrary number Bases.  I'm totally addicted to bass!
+# 3159mLT: Math::BaseCnv.pm by PipStuart <Pip@CPAN.Org> to CoNVert between arbitrary number Bases. I'm totally addicted to bass!
 package Math::BaseCnv;
 require Exporter;
 use strict;
 use warnings;
 use base qw(Exporter);
+use Math::BigInt;
 use Memoize; memoize('summ'); memoize('fact'); memoize('choo');
 # only export cnv() for 'use Math::BaseCnv;' && all other stuff optionally
 our @EXPORT      =             qw(cnv                                    )    ;
@@ -13,7 +14,7 @@ our %EXPORT_TAGS = ( 'all' =>[ qw(cnv dec hex b10 b64 b64sort dig diginit summ f
                      'b64' =>[ qw(cnv         b10 b64 b64sort            ) ],
                      'dig' =>[ qw(                            dig diginit) ],
                      'sfc' =>[ qw(                         summ fact choo) ] );
-our $VERSION     = '1.4.75O6Pbr'; our $PTVR = $VERSION; $PTVR =~ s/^\d+\.\d+\.//; # Please see `perldoc Time::PT` for an explanation of $PTVR.
+our $VERSION     = '1.8.B59BrZX'; our $PTVR = $VERSION; $PTVR =~ s/^\d+\.\d+\.//; # Please see `perldoc Time::PT` for an explanation of $PTVR.
 my $d2bs = ''; my %bs2d = (); my $nega = '';
 my %digsets = (
   'usr' => [], # this will be assigned if a dig(\@newd) call is made
@@ -23,8 +24,15 @@ my %digsets = (
   'hex' => ['0'..'9', 'a'..'f'],
   'HEX' => ['0'..'9', 'A'..'F'],
   'b62' => ['0'..'9', 'a'..'z', 'A'..'Z'],
-  'm64' => ['A'..'Z', 'a'..'z', '0'..'9', '+', '/'], # 0-63 from MIME::Base64
   'b64' => ['0'..'9', 'A'..'Z', 'a'..'z', '.', '_'], # month:C:12 day:V:31
+  'm64' => ['A'..'Z', 'a'..'z', '0'..'9', '+', '/'], # 0-63 from MIME::Base64
+  'iru' => ['A'..'Z', 'a'..'z', '0'..'9', '[', ']'], # P10 server-server protocol used by IRCu daemon
+  'url' => ['A'..'Z', 'a'..'z', '0'..'9', '-', '_'], # MIME::Base64::URLSafe which avoids %2B && %2F expansions of '+' && '/' respectively
+  'rex' => ['A'..'Z', 'a'..'z', '0'..'9', '!', '-'], # Regular EXpression variant
+  'id0' => ['A'..'Z', 'a'..'z', '0'..'9', '_', '-'], # IDentifier style 0
+  'id1' => ['A'..'Z', 'a'..'z', '0'..'9', '.', '_'], # IDentifier style 1
+  'xnt' => ['A'..'Z', 'a'..'z', '0'..'9', '.', '-'], # XML Name Tokens (Nmtoken)
+  'xid' => ['A'..'Z', 'a'..'z', '0'..'9', '_', ':'], # XML identifiers (Name   )
   'b85' => ['0'..'9', 'A'..'Z', 'a'..'z', '!', '#',  # RFC 1924 for IPv6 addresses, might need to return Math::BigInt objs
             '$', '%', '&', '(', ')', '*', '+', '-', ';', '<', '=', '>', '?', '@', '^', '_', '`', '{', '|', '}', '~'],
 );
@@ -35,24 +43,21 @@ sub dig { # assign a new digit character list
   if(ref $_[0]) { $d2bs = 'usr'; $digsets{$d2bs} = [ @{ shift() } ]; }
   else          { my $setn = shift(); return(-1) unless(exists $digsets{$setn}); $d2bs = $setn; }
   diginit() unless(@{ $digsets{$d2bs} });
-  bs2init();
-}
+  bs2init(); }
 sub cnv__10 { # convert from some number base to decimal fast
-  my $t = shift || '0'; my $s = shift || 64; my $n = 0;
+  my $t = shift || '0'; my $s = shift || 64; my $n = Math::BigInt->new();
   $nega = ''; $nega = '-' if($t =~ s/^-//);
-  foreach(split(//, $t)) { return(-1) unless(exists $bs2d{$_}); }
-  while(length($t)) { $n += $bs2d{substr($t,0,1,'')}; $n *= $s; } 
-  return($nega . int($n / $s));
-}
+  for(split(//, $t)) { return(-1) unless(exists $bs2d{$_}); }
+  while(length($t)) { $n += $bs2d{substr($t,0,1,'')}; $n *= $s; }
+  return($nega . int($n / $s)); }
 sub cnv10__ { # convert from decimal to some number base fast
-  my $n = shift || 0; my $s = shift || 64; my $t = '';
+  my $n = Math::BigInt->new(shift || '0'); my $s = shift || 64; my $t = '';
   return(-1) if($s > @{ $digsets{$d2bs} });
   $nega = ''; $nega = '-' if($n =~ s/^-//);
   while($n) { $t = $digsets{$d2bs}->[($n % $s)] . $t; $n = int($n / $s); }
   if(length($t)) { $t = $nega . $t;           }
   else           { $t = $digsets{$d2bs}->[0]; }
-  return($t);
-}
+  return($t); }
 sub dec     { return(cnv__10(uc(shift), 16)); }#shortcut for hexadecimal -> decimal
 sub hex     { return(cnv10__(   shift,  16)); }#shortcut for decimal     -> hex
 sub b10     { return(cnv__10(   shift,  64)); }#shortcut for base64      -> decimal
@@ -77,28 +82,28 @@ sub cnv     { # CoNVert between any number base
   return($numb);
 }
 sub summ { # simple function to calculate summation down to 1
-  my $summ = shift; return(0) unless(defined($summ) && $summ && ($summ > 0)); my $answ = $summ; while(--$summ) { $answ += $summ; } return($answ);
+  my $summ = shift; return(0) unless(defined($summ) && $summ && ($summ > 0)); my $answ = Math::BigInt->new($summ);while(--$summ){$answ +=$summ;} return($answ);
 }
 sub fact { # simple function to calculate factorials
-  my $fact = shift; return(0) unless(defined($fact) && $fact && ($fact > 0)); my $answ = $fact; while(--$fact) { $answ *= $fact; } return($answ);
+  my $fact = shift; return(0) unless(defined($fact) && $fact && ($fact > 0)); my $answ = Math::BigInt->new($fact);while(--$fact){$answ *=$fact;} return($answ);
 }
 sub choo { # simple function to calculate n choose m  (i.e., (n! / (m! * (n - m)!)))
-  my $ennn = shift; my $emmm = shift; return(0) unless(defined($ennn) && defined($emmm) && $ennn && $emmm && ($ennn != $emmm));
-  ($ennn, $emmm) = ($emmm, $ennn) if($ennn < $emmm); my $diff = $ennn - $emmm; my $answ = fact($ennn); my $mfct = fact($emmm); my $dfct = fact($diff);
+  my $ennn = Math::BigInt->new(shift); my $emmm = Math::BigInt->new(shift);
+  return(0) unless(defined($ennn) && defined($emmm) && $ennn && $emmm && ($ennn != $emmm));
+  ($ennn, $emmm) = ($emmm, $ennn) if($ennn < $emmm); my $diff = Math::BigInt->new($ennn - $emmm); my $answ = Math::BigInt->new(fact($ennn));
+                                                     my $mfct = Math::BigInt->new( fact(  $emmm));my $dfct = Math::BigInt->new(fact($diff));
   $mfct *= $dfct; return(0) unless($mfct);
   $answ /= $mfct; return($answ);
 }
 diginit(); # initialize the Dflt digit set whenever BaseCnv is used
-
 127;
-
 =head1 NAME
 
 Math::BaseCnv - fast functions to CoNVert between number Bases
 
 =head1 VERSION
 
-This documentation refers to version 1.4.75O6Pbr of Math::BaseCnv, which was released on Thu May 24 06:25:37:53 2007.
+This documentation refers to version 1.8.B59BrZX of Math::BaseCnv, which was released on Mon May  9 11:53:35:33 2011.
 
 =head1 SYNOPSIS
 
@@ -114,15 +119,15 @@ This documentation refers to version 1.4.75O6Pbr of Math::BaseCnv, which was rel
 
 =head1 DESCRIPTION
 
-BaseCnv provides a few simple functions for converting between arbitrary number bases.  It is as fast as I currently know how to make it (of course
-relying only on the lovely Perl).  If you would rather utilize an object syntax for number-base conversion, please see Ken Williams's
+BaseCnv provides a few simple functions for converting between arbitrary number bases. It is as fast as I currently know how to make it (of course
+relying only on the lovely Perl). If you would rather utilize an object syntax for number-base conversion, please see Ken Williams'
 <Ken@Forum.Swarthmore.Edu> fine L<Math::BaseCalc> module.
 
 =head1 PURPOSE
 
-The reason I created BaseCnv was that I needed a simple way to convert quickly between the 3 number bases I use most (10, 16, && 64).  It turned out
-that it was trivial to handle any arbitrary number base that is represented as characters.  High-bit ASCII has proven somewhat problemmatic but at least
-BaseCnv can simply && realiably convert between any possible base between 2 && 64 (or 85).  I'm happy with it && employ b64() in places I probably
+The reason I created BaseCnv was that I needed a simple way to convert quickly between the 3 number bases I use most (10, 16, && 64). It turned out
+that it was trivial to handle any arbitrary number base that is represented as characters. High-bit ASCII has proven somewhat problemmatic but at least
+BaseCnv can simply && realiably convert between any possible base between 2 && 64 (or 85). I'm happy with it && employ b64() in places I probably
 shouldn't now =).
 
 =head1 USAGE
@@ -145,7 +150,7 @@ B<When all three parameters are provided:>
 
 The normal (&& most clear) usage of cnv() is to provide all three parameters where $numb is converted from $from base to $tobs.
 
-cnv() is the only function that is exported from a normal 'use Math::BaseCnv;' command.  The other functions below can be imported to local namespaces
+cnv() is the only function that is exported from a normal 'use Math::BaseCnv;' command. The other functions below can be imported to local namespaces
 explicitly or with the following tags:
 
   :all - every function described here
@@ -178,7 +183,7 @@ Please read the L<"NOTES"> regarding hex().
 
 =head2 dig(\@newd)
 
-Assign the new digit character list to be used in place of the default one.  dig() can also alternately accept a string name matching one of the
+Assign the new digit character list to be used in place of the default one. dig() can also alternately accept a string name matching one of the
 following predefined digit sets:
 
   'bin' => ['0', '1']
@@ -187,14 +192,21 @@ following predefined digit sets:
   'hex' => ['0'..'9', 'a'..'f']
   'HEX' => ['0'..'9', 'A'..'F']
   'b62' => ['0'..'9', 'a'..'z', 'A'..'Z']
+  'b64' => ['0'..'9', 'A'..'Z', 'a'..'z', '.', '_']
   'm64' => ['A'..'Z', 'a'..'z', '0'..'9', '+', '/'] # MIME::Base64
-  'b64' => ['0'..'9', 'A'..'Z', 'a'..'z', '.', '_'] 
+  'iru' => ['A'..'Z', 'a'..'z', '0'..'9', '[', ']'] # IRCu
+  'url' => ['A'..'Z', 'a'..'z', '0'..'9', '-', '_'] # MIME::Base64::URLSafe
+  'rex' => ['A'..'Z', 'a'..'z', '0'..'9', '!', '-'] # RegEx
+  'id0' => ['A'..'Z', 'a'..'z', '0'..'9', '_', '-'] # ID 0
+  'id1' => ['A'..'Z', 'a'..'z', '0'..'9', '.', '_'] # ID 1
+  'xnt' => ['A'..'Z', 'a'..'z', '0'..'9', '.', '-'] # XML Nmtoken
+  'xid' => ['A'..'Z', 'a'..'z', '0'..'9', '_', ':'] # XML ID Name
   'b85' => ['0'..'9', 'A'..'Z', 'a'..'z', '!', '#', # RFC 1924 for
             '$', '%', '&', '(', ')', '*', '+', '-', #   IPv6 addrs
             ';', '<', '=', '>', '?', '@', '^', '_', #   like in
             '`', '{', '|', '}', '~'               ] # Math::Base85
 
-If no \@newd list or digit set name is provided as a parameter, dig() returns the current character list.  It's fine to have many more characters
+If no \@newd list or digit set name is provided as a parameter, dig() returns the current character list. It's fine to have many more characters
 in your current digit set than will be used with your conversions (e.g., using dig('b64') works fine for any cnv() call with $from && $tobs params
 less than or equal to 64).
 
@@ -204,20 +216,20 @@ An example of a \@newd parameter for a specified alternate digit set for base 9
 
 =head2 diginit()
 
-Resets the used digit list to the initial default order of the predefined digit set: 'b64'.  This is simply a shortcut for calling dig('b64') for
+Resets the used digit list to the initial default order of the predefined digit set: 'b64'. This is simply a shortcut for calling dig('b64') for
 reinitialization purposes.
 
 =head2 summ($numb)
 
-A simple function to calculate a memoized summation of $numb down to 1.
+A simple function to calculate a memoized BigInt summation of $numb down to 1.
 
 =head2 fact($numb)
 
-A simple function to calculate a memoized factorial of $numb.
+A simple function to calculate a memoized BigInt factorial of $numb.
 
 =head2 choo($ennn, $emmm)
 
-A simple function to calculate a memoized function  of $ennn choose $emmm.
+A simple function to calculate a memoized BigInt function  of $ennn choose $emmm.
 
 =head1 NOTES
 
@@ -228,13 +240,13 @@ it makes more sense to me this way && will be easier to remember (I've had to lo
 impetus for this module... as well as the gut reaction that sprintf() is not a proper natural inverse function for hex()).
 
 This means that my b64() function takes a decimal number as a parameter && returns the base64 equivalent (FromBase = 10, ToBase = 64) && my b10()
-function takes a base64 number (string) && returns the decimal value (FromBase = 64, ToBase = 10).  My hex() function overloads Perl's builtin version
-with this opposite behavior so my dec() function behaves like Perl's normal hex() function.  I know it's confusing && maybe bad form of me to do this
+function takes a base64 number (string) && returns the decimal value (FromBase = 64, ToBase = 10). My hex() function overloads Perl's builtin version
+with this opposite behavior so my dec() function behaves like Perl's normal hex() function. I know it's confusing && maybe bad form of me to do this
 but I like it so much better this way that I'd rather go against the grain.
 
-Please think of my dec() && hex() functions as meaning decify && hexify.  Also the pronunciation of dec() is 'dess' (!'deck' which would be the inverse
+Please think of my dec() && hex() functions as meaning decify && hexify. Also the pronunciation of dec() is 'dess' (!'deck' which would be the inverse
 of 'ink' which -- && ++ already do so well). After reading the informative Perl module etiquette guidelines, I now  appreciate the need to export as
-little as is necessary by default. So to be responsible, I have limited BaseCnv exporting to only cnv() under normal circumstances.  Please
+little as is necessary by default. So to be responsible, I have limited BaseCnv exporting to only cnv() under normal circumstances. Please
 specify the other functions you'd like to import into your namespace or use the tags described above in the cnv() section like:
 
   'use Math::BaseCnv qw(:all !:hex);'
@@ -246,10 +258,10 @@ This module does not handle fractional number inputs because I like using the do
 summ(), fact(), && choo() are general Math function utilities which are unrelated to number-base conversion but I didn't feel like making another separate
 module just for them so they snuck in here.
 
-I hope you find Math::BaseCnv useful.  Please feel free to e-mail me any suggestions or coding tips or notes of appreciation ("app-ree-see-ay-shun").
-Thank you.  TTFN.
+I hope you find Math::BaseCnv useful. Please feel free to e-mail me any suggestions or coding tips or notes of appreciation ("app-ree-see-ay-shun").
+Thank you. TTFN.
 
-=head1 2DO
+=head1 2DU
 
 =over 2
 
@@ -267,6 +279,22 @@ Revision history for Perl extension Math::BaseCnv:
 
 =over 2
 
+=item - 1.8.B59BrZX  Mon May  9 11:53:35:33 2011
+
+* updated 'url' digit set to URLSafe to resolve HTTPS://RT.CPAN.Org/Ticket/Display.html?id=60125
+
+* updated license copyright years (already had GPLv3)
+
+=item - 1.6.A6FGHKE  Tue Jun 15 16:17:20:14 2010
+
+* bumped minor version number so they'll keep ascending (without PT comprehension)
+
+=item - 1.4.A6FAbEb  Tue Jun 15 10:37:14:37 2010
+
+* added Math::BigInt code for >64-bit number-base conversions
+
+* added a bunch more DigitSets: IRCu, URL, RegEx, identifier variants, XML Nmtoken, && XML ID Name
+
 =item - 1.4.75O6Pbr  Thu May 24 06:25:37:53 2007
 
 * added Test::Pod(::Coverage)? tests && PREREQ entries
@@ -389,9 +417,9 @@ or uncompress the package && run:
 
 =head1 LICENSE
 
-Most source code should be Free!  Code I have lawful authority over is && shall be!
-Copyright: (c) 2003-2007, Pip Stuart.
-Copyleft :  This software is licensed under the GNU General Public License (version 2).  Please consult the Free Software Foundation (HTTP://FSF.Org)
+Most source code should be Free! Code I have lawful authority over is && shall be!
+Copyright:(c) 2003-2011, Pip Stuart.
+Copyleft : This software is licensed under the GNU General Public License (version 3). Please consult the Free Software Foundation (HTTP://FSF.Org)
   for important information about your freedom.
 
 =head1 AUTHOR
@@ -4,18 +4,20 @@ my $mbld = Module::Build->new(
 # 'module_name'                   => 'Math::BaseCnv',
   'dist_name'                     => 'Math-BaseCnv',
 # 'dist_version_from'             => 'BaseCnv.pm',
-  'dist_version'                  => '1.4.75O6Pbr',
+  'dist_version'                  => '1.8.B59BrZX',
   'dist_abstract'                 => 'fast functions to CoNVert between number Bases',
   'dist_author'                   => 'Pip Stuart <Pip@CPAN.Org>',
 # 'create_readme'                 => '1',
 # 'create_makefile_pl'            => '1', # 'traditional',
   'license'                       => 'gpl',
   'script_files'                  => {
+    'bin/cnv'                       => '1',
   },
   'pm_files'                      => {
     'BaseCnv.pm'                    => 'lib/Math/BaseCnv.pm',
   },
   'requires'                      => {
+    'Math::BigInt'                  => '0',
     'Memoize'                       => '0',
     'Test'                          => '0',
     'Test::Pod'                     => '0',
@@ -1,6 +1,22 @@
 CHANGES
     Revision history for Perl extension Math::BaseCnv:
 
+    - 1.8.B59BrZX Mon May 9 11:53:35:33 2011
+      * updated 'url' digit set to URLSafe to resolve
+      HTTPS://RT.CPAN.Org/Ticket/Display.html?id=60125
+
+      * updated license copyright years (already had GPLv3)
+
+    - 1.6.A6FGHKE Tue Jun 15 16:17:20:14 2010
+      * bumped minor version number so they'll keep ascending (without PT
+      comprehension)
+
+    - 1.4.A6FAbEb Tue Jun 15 10:37:14:37 2010
+      * added Math::BigInt code for >64-bit number-base conversions
+
+      * added a bunch more DigitSets: IRCu, URL, RegEx, identifier variants,
+      XML Nmtoken, && XML ID Name
+
     - 1.4.75O6Pbr Thu May 24 06:25:37:53 2007
       * added Test::Pod(::Coverage)? tests && PREREQ entries
 
@@ -1,12 +1,13 @@
 --- #YAML:1.0
 name: Math-BaseCnv
 abstract: fast functions to CoNVert between number Bases
-version: 1.4.75O6Pbr
+version: 1.8.B59BrZX
 author:
   - Pip Stuart <Pip@CPAN.Org>
 license: gpl
 distribution_type: module
 requires:
+  Math::BigInt: 0
   Memoize: 0
 recommends:
 build_requires:
@@ -18,4 +19,4 @@ urls:
 meta-spec:
   version: 1.3
   url: HTTP://Module-Build.SourceForge.Net/META-spec-v1.3.html
-generated_by: e pkg v1.0.75L6d1c
+generated_by: e pkg v1.0.A2RJrKV
@@ -3,12 +3,14 @@ use ExtUtils::MakeMaker;
 #   the contents of the Makefile that is written.
 WriteMakefile(
   'NAME'         => 'Math::BaseCnv',
-  'VERSION'      => '1.4.75O6Pbr',
+  'VERSION'      => '1.8.B59BrZX',
   'ABSTRACT'     => 'fast functions to CoNVert between number Bases',
   'AUTHOR'       => 'Pip Stuart <Pip@CPAN.Org>',
   'EXE_FILES'    => [ 
+                      'bin/cnv',
                     ],
   'PREREQ_PM'    => {
+    'Math::BigInt'                   => 0,
     'Memoize'                        => 0,
     'Test'                           => 0,
     'Test::Pod'                      => 0,
@@ -2,8 +2,8 @@ NAME
     Math::BaseCnv - fast functions to CoNVert between number Bases
 
 VERSION
-    This documentation refers to version 1.4.75O6Pbr of Math::BaseCnv, which
-    was released on Thu May 24 06:25:37:53 2007.
+    This documentation refers to version 1.8.B59BrZX of Math::BaseCnv, which
+    was released on Mon May 9 11:53:35:33 2011.
 
 SYNOPSIS
       use Math::BaseCnv;
@@ -20,7 +20,7 @@ DESCRIPTION
     BaseCnv provides a few simple functions for converting between arbitrary
     number bases. It is as fast as I currently know how to make it (of
     course relying only on the lovely Perl). If you would rather utilize an
-    object syntax for number-base conversion, please see Ken Williams's
+    object syntax for number-base conversion, please see Ken Williams'
     <Ken@Forum.Swarthmore.Edu> fine Math::BaseCalc module.
 
 PURPOSE
@@ -97,8 +97,15 @@ USAGE
       'hex' => ['0'..'9', 'a'..'f']
       'HEX' => ['0'..'9', 'A'..'F']
       'b62' => ['0'..'9', 'a'..'z', 'A'..'Z']
+      'b64' => ['0'..'9', 'A'..'Z', 'a'..'z', '.', '_']
       'm64' => ['A'..'Z', 'a'..'z', '0'..'9', '+', '/'] # MIME::Base64
-      'b64' => ['0'..'9', 'A'..'Z', 'a'..'z', '.', '_'] 
+      'iru' => ['A'..'Z', 'a'..'z', '0'..'9', '[', ']'] # IRCu
+      'url' => ['A'..'Z', 'a'..'z', '0'..'9', '-', '_'] # MIME::Base64::URLSafe
+      'rex' => ['A'..'Z', 'a'..'z', '0'..'9', '!', '-'] # RegEx
+      'id0' => ['A'..'Z', 'a'..'z', '0'..'9', '_', '-'] # ID 0
+      'id1' => ['A'..'Z', 'a'..'z', '0'..'9', '.', '_'] # ID 1
+      'xnt' => ['A'..'Z', 'a'..'z', '0'..'9', '.', '-'] # XML Nmtoken
+      'xid' => ['A'..'Z', 'a'..'z', '0'..'9', '_', ':'] # XML ID Name
       'b85' => ['0'..'9', 'A'..'Z', 'a'..'z', '!', '#', # RFC 1924 for
                 '$', '%', '&', '(', ')', '*', '+', '-', #   IPv6 addrs
                 ';', '<', '=', '>', '?', '@', '^', '_', #   like in
@@ -121,14 +128,15 @@ USAGE
     dig('b64') for reinitialization purposes.
 
   summ($numb)
-    A simple function to calculate a memoized summation of $numb down to 1.
+    A simple function to calculate a memoized BigInt summation of $numb down
+    to 1.
 
   fact($numb)
-    A simple function to calculate a memoized factorial of $numb.
+    A simple function to calculate a memoized BigInt factorial of $numb.
 
   choo($ennn, $emmm)
-    A simple function to calculate a memoized function of $ennn choose
-    $emmm.
+    A simple function to calculate a memoized BigInt function of $ennn
+    choose $emmm.
 
 NOTES
     The Perl builtin hex() function takes a hex string as a parameter &&
@@ -177,7 +185,7 @@ NOTES
     suggestions or coding tips or notes of appreciation
     ("app-ree-see-ay-shun"). Thank you. TTFN.
 
-2DO
+2DU
     - better error checking
     - handle fractional parts? umm but I like using '.' as a b64 char so ','
     comma or some other separator?
@@ -186,6 +194,22 @@ NOTES
 CHANGES
     Revision history for Perl extension Math::BaseCnv:
 
+    - 1.8.B59BrZX Mon May 9 11:53:35:33 2011
+      * updated 'url' digit set to URLSafe to resolve
+      HTTPS://RT.CPAN.Org/Ticket/Display.html?id=60125
+
+      * updated license copyright years (already had GPLv3)
+
+    - 1.6.A6FGHKE Tue Jun 15 16:17:20:14 2010
+      * bumped minor version number so they'll keep ascending (without PT
+      comprehension)
+
+    - 1.4.A6FAbEb Tue Jun 15 10:37:14:37 2010
+      * added Math::BigInt code for >64-bit number-base conversions
+
+      * added a bunch more DigitSets: IRCu, URL, RegEx, identifier variants,
+      XML Nmtoken, && XML ID Name
+
     - 1.4.75O6Pbr Thu May 24 06:25:37:53 2007
       * added Test::Pod(::Coverage)? tests && PREREQ entries
 
@@ -286,8 +310,8 @@ INSTALL
 
 LICENSE
     Most source code should be Free! Code I have lawful authority over is &&
-    shall be! Copyright: (c) 2003-2007, Pip Stuart. Copyleft : This software
-    is licensed under the GNU General Public License (version 2). Please
+    shall be! Copyright:(c) 2003-2011, Pip Stuart. Copyleft : This software
+    is licensed under the GNU General Public License (version 3). Please
     consult the Free Software Foundation (HTTP://FSF.Org) for important
     information about your freedom.
 
diff --git a/var/tmp/source/PIP/Math-BaseCnv-1.4.75O6Pbr/Math-BaseCnv-1.4.75O6Pbr/bin/cnv b/var/tmp/source/PIP/Math-BaseCnv-1.8.B59BrZX/Math-BaseCnv-1.8.B59BrZX/bin/cnv
old mode 100644
new mode 100755