| Server IP : 216.92.14.13 / Your IP : 216.73.216.171 Web Server : Apache System : Linux vps4089.pairvps.com 5.15.0-190-generic #200-Ubuntu SMP Fri Aug 7 15:06:04 UTC 2026 x86_64 User : rmlac2fmr ( 1040637) PHP Version : 8.2.32 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/local/bin/ |
Upload File : |
#!/usr/bin/env perl
# ABSTRACT: Command line interface for dice rolls
# PODNAME: roll
use 5.010;
use strict;
use warnings;
use Games::Dice qw(roll);
if ( @ARGV ) {
for ( @ARGV ) {
if ( ! -f $_ ) {
do_roll($_);
}
else {
open my $f, "<", $_;
while ( <$f> ) {
do_roll(chomp);
}
}
}
}
else {
while (<STDIN>) {
do_roll(chomp);
}
}
sub do_roll {
say "$_: " . roll("$_");
}
=pod
=encoding UTF-8
=head1 NAME
roll - Command line interface for dice rolls
=head1 VERSION
version 0.045
=head1 SYNOPSIS
# Evaluate these command line params
roll 3d6 2d8
echo "5d6" > f
echo "2d4+1" >> f
# Read the contents of 'f' from STDIN
roll < f
# Evaluate 1d100 and open file 'f'
roll d% f
=head1 OVERVIEW
This is a command line interface to the L<Games::Dice> library. It takes
die rolling specifications in the form of I<a>dI<b>[+-*/b]I<c>.
(This specification may change a bit over time, but not radically.)
=over
=item *
I<a> is optional and defaults to 1; this is number of dice to roll.
=item *
I<b> is the number of sides on each die. '%' is shorthand for 100.
=back
The optional end modifies the sum of the rolls. 'b' means take the
"best" I<c> rolls and sum them. Also '/' truncates the result to
an integer after division.
Dice specifications can be piped in, given on STDIN or as positional
parameters from the command line.
If a positional parameter matches a file name, it will be opened and
each line of the file evaluated.
=head1 AUTHORS
=over 4
=item *
Philip Newton <pne@cpan.org>
=item *
Ricardo Signes <rjbs@cpan.org>
=back
=head1 COPYRIGHT AND LICENSE
This software is Copyright (c) 1999 by Philip Newton.
This is free software, licensed under:
The MIT (X11) License
=cut
__END__
#pod =head1 SYNOPSIS
#pod
#pod # Evaluate these command line params
#pod roll 3d6 2d8
#pod
#pod echo "5d6" > f
#pod echo "2d4+1" >> f
#pod
#pod # Read the contents of 'f' from STDIN
#pod roll < f
#pod
#pod # Evaluate 1d100 and open file 'f'
#pod roll d% f
#pod
#pod =head1 OVERVIEW
#pod
#pod This is a command line interface to the L<Games::Dice> library. It takes
#pod die rolling specifications in the form of I<a>dI<b>[+-*/b]I<c>.
#pod
#pod (This specification may change a bit over time, but not radically.)
#pod
#pod =over
#pod
#pod =item *
#pod
#pod I<a> is optional and defaults to 1; this is number of dice to roll.
#pod
#pod =item *
#pod
#pod I<b> is the number of sides on each die. '%' is shorthand for 100.
#pod
#pod =back
#pod
#pod The optional end modifies the sum of the rolls. 'b' means take the
#pod "best" I<c> rolls and sum them. Also '/' truncates the result to
#pod an integer after division.
#pod
#pod Dice specifications can be piped in, given on STDIN or as positional
#pod parameters from the command line.
#pod
#pod If a positional parameter matches a file name, it will be opened and
#pod each line of the file evaluated.