App-Session-Token
view release on metacpan or search on metacpan
bin/session-token view on Meta::CPAN
if ($opt->{help}) {
require Pod::Perldoc;
@ARGV = ('-F', $0);
Pod::Perldoc->run();
}
$opt->{seed} = "\x00"x1024 if $opt->{'null-seed'};
my $generator = Session::Token->new(%$opt);
if (exists $opt->{num} && exists $opt->{infinity}) {
die "can't specify both num and infinity"
} elsif (exists $opt->{infinity}) {
while(1) {
print $generator->get(), "\n";
}
} else {
my $iters = $opt->{num};
$iters = 1 if !defined $iters;
for (1 .. $iters) {
print $generator->get(), "\n";
}
}
__END__
=encoding utf-8
=head1 NAME
session-token - command-line script for generating session tokens
=head1 USAGE
$ session-token
ATXOpAxCu57sVZvoBiWgHg
$ session-token --entropy 256
hk0No9bjuknBxmpIujW3bZvnFmryTvEbTPNitd8L9kC
$ session-token --length 5 --alphabet ACGT --num 3
GAATT
ACCAT
AATTG
## If you don't know how many tokens you need at the start of the pipeline...
$ session-token --infinity | ... | head
=head1 DESCRIPTION
This module came about because I found myself frequently running the following command:
$ perl -MSession::Token -E 'say Session::Token->new->get'
YwXYXGLMMnudk33MbClseQ
Before I wrote L<Session::Token> I used to run the following command:
$ openssl rand -base64 16
fjxhL/LmZEUQ+NCldQbHgA==
They both perform essentially the same task however C<session-token> has various advantages:
It is more flexible regarding the alphabet used since it supports any alphabet that L<Session::Token> does via the C<--alphabet> switch. Its default alphabet is the (IMO) nice base-62 versus C<openssl rand>'s base-64.
It can efficiently generate a large number of random tokens with the C<--num> switch. Calling C<openssl rand> for each token would fork a lot of processes and open and read from C</dev/urandom> in each one.
If cross-platform determinism is required, the C<--seed> or C<--null-seed> switches are available and they don't require seed files or anything. Note that you should only use these switches for benchmarks or simulations and never for applications req...
C<openssl rand> does some weirdness with reading from/writing to the C<~/.rnd> file in your home directory as a potential entropy source/store. C<session-token> will always fail noisily if it can't read from C</dev/urandom>.
Finally, C<session-token> is easier to remember and type don't you think?
=head1 SEE ALSO
L<App-Session-Token github repo|https://github.com/hoytech/App-Session-Token>
L<Session::Token>
=head1 AUTHOR
Doug Hoyte, C<< <doug@hcsw.org> >>
=head1 COPYRIGHT & LICENSE
Copyright 2014-2016 Doug Hoyte.
This module is licensed under the same terms as perl itself.
=cut
( run in 0.499 second using v1.01-cache-2.11-cpan-d7a12ab2c7f )