random
view release on metacpan or search on metacpan
lib/random.pm view on Meta::CPAN
package random;
use warnings;
use strict;
use 5.010;
=head1 NAME
random - have rand() return integers or fixed values
=head1 VERSION
Version 0.01
=cut
our $VERSION = '0.02';
=head1 SYNOPSIS
use random;
my $dice = 1 + rand 6; # one of 1 .. 6
# or
use random qw(integer);
my $dice = 1 + rand 6; # one of 1 .. 6
use random qw(fixed 6); # cheat on dice
my $six = rand; # 6
=head1 EXPORT
Nothing.
=head1 FUNCTIONS
=head2 import
=cut
sub import {
shift; #
my %args = @_<=1? ( "integer" => 1) : @_;
$^H{random} = $args{fixed} ? $args{fixed}
: $args{integer} ? -123456789
: undef;
return
}
=head2 unimport
=cut
sub unimport {
undef $^H{random};
return;
}
=head2 rand
when random (integer) is in effect it returns int(rand)
when random (fixed) is in effect it returns the fixed value
otherwise CORE::rand
=cut
sub rand {
my $ctrl_h = ( caller 0 )[10];
my $param = $_[0] // 1;
if ( !defined $ctrl_h->{random}) {
return CORE::rand($param);
}
elsif ( -123456789 eq $ctrl_h->{random} ){
return int($param * CORE::rand);
}
else {
return $ctrl_h->{random};
}
}
BEGIN {
*CORE::GLOBAL::rand = *random::rand;
}
=head1 AUTHOR
Joerg Meltzer, C<< <joerg {at} joergmeltzer.de> >>
=head1 BUGS
Please report any bugs or feature requests to C<bug-random at rt.cpan.org>, or through
the web interface at L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=random>. I will be notified, and then you'll
automatically be notified of progress on your bug as I make changes.
The fixed value -123456789 doesn't work. The value is reserved to make the integer option work.
=head1 SUPPORT
You can find documentation for this module with the perldoc command.
( run in 0.996 second using v1.01-cache-2.11-cpan-5b529ec07f3 )