package Sys::User::UIDhelper;

use warnings;
use strict;

=head1 NAME

Sys::User::UIDhelper - Helps for locating free UIDs.

=head1 VERSION

Version 0.0.1


our $VERSION = '0.0.1';


This finds a 

    use Sys::User::UIDhelper;

    #implements it with the default values
    my $foo = Sys::User::UIDhelper->new();

    #sets the min to 0 and the max to 4000
    my $foo = Sys::User::UIDhelper->new({max=>'0', min=>'4000'});

    #finds the first free one
    my $first = $foo->firstfree();
        print $first."\n";
        print "not found\n";

    #finds the first last one
    my $last = $foo->lastfree();
        print $last."\n";
        print "not found\n";

=head1 EXPORT


=head2 new

This initiates the module. It accepts one arguement, a hash. Please See below
for accepted values.

=head3 min

The minimum UID.

=head3 max

The maximum UID.


sub new {
	my %args;
		%args= %{$_[1]};

	my $self={error=>undef, set=>undef};
	bless $self;

	#set default max
	#this number is based on FreeBSD
	if (defined($args{max})) {

	#this is choosen as on most systems 1000 is the general base for
	#new users
	if (defined($args{min})) {

	return $self;

=head2 firstfree

This finds the first free UID. If it returns undef, no free ones were found.


sub firstfree {
	my $self=$_[0];
	my $int=$self->{min};
	while ( $int <= $self->{max}) {
		if (!getpwuid($int)) {
			return $int


	return undef;

=head2 lastfree

This finds the first last UID. If it returns undef, no free ones were found.


sub lastfree {
	my $self=$_[0];

	my $int=$self->{max};
	while ( $int >= $self->{min}) {
		if (!getpwuid($int)) {
			return $int


	return undef;

#=head2 errorBlank
#A internal function user for clearing an error.
#blanks the error flags
#sub errorBlank{
#	my $self=$_[0];
#	#error handling
#	$self->{error}=undef;
#	$self->{errorString}="";
#	return 1;

=head1 Todo

Implement various backends for system, LDAP, and passwd.

=head1 AUTHOR

Zane C. Bowers, C<< <vvelox at> >>

=head1 BUGS

Please report any bugs or feature requests to C<bug-sys-user-uidhelper at>, 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 SUPPORT

You can find documentation for this module with the perldoc command.

    perldoc Sys::User::UIDhelper

You can also look for information at:

=over 4

=item * RT: CPAN's request tracker


=item * AnnoCPAN: Annotated CPAN documentation


=item * CPAN Ratings


=item * Search CPAN





Copyright 2008 Zane C. Bowers, all rights reserved.

This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.


1; # End of Sys::User::UIDhelper