package Purple::Sequence; use strict; use warnings; sub increment_nid { my $old_nid = shift; my @oldValues = split('', $old_nid); my @newValues; my $carryBit = 1; foreach my $char (reverse(@oldValues)) { if ($carryBit) { my $newChar; ($newChar, $carryBit) = _incChar($char); push(@newValues, $newChar); } else { push(@newValues, $char); } } push(@newValues, '1') if ($carryBit); return join('', (reverse(@newValues))); } sub _incChar { my $char = shift; if ($char eq 'Z') { return '0', 1; } if ($char eq '9') { return 'A', 0; } if ($char =~ /[A-Z0-9]/) { return chr(ord($char) + 1), 0; } } 1; =head1 NAME Purple::Sequence - Generate the next NID in a Sequence of NIDs =head1 SYNOPSIS This module contains the code for calculating the next NID in a sequence of Purple Numbers. my $next_nid = Purple::Sequence::increment_nid($current_nid); =head1 FUNCTIONS =head2 increment_nid($current_nid) Returns the next NID after $current_nid. =head1 AUTHORS Chris Dent, Ecdent@burningchrome.comE Eugene Eric Kim, Eeekim@blueoxen.comE =head1 BUGS Please report any bugs or feature requests to C, or through the web interface at L. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes. =head1 COPYRIGHT & LICENSE (C) Copyright 2006 Blue Oxen Associates, all rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut 1; # End of Purple::Sequence