Projekt

Allgemein

Profil

Herunterladen (1,12 KB) Statistiken
| Zweig: | Markierung: | Revision:
package SL::SessionFile::Random;

use strict;
use parent qw(SL::SessionFile);

my @CHARS = ('A'..'Z', 'a'..'z', 0..9, '_');
my $template = 'X' x 10;
use constant MAX_TRIES => 1000;

sub new {
my ($class, %params) = @_;

my $filename;
my $tries = 0;
$filename = _get_file() while $tries++ < MAX_TRIES && (!$filename || -e $filename);

$class->SUPER::new($filename, %params);
}

sub _get_file {
my $filename = $template;
$filename =~ s/X(?=X*\z)/$CHARS[ int( rand( @CHARS ) ) ]/ge;
$filename;
}

1;

__END__

=encoding utf-8

=head1 NAME

SL::SessionFile::Random - SessionFile with a random name

=head1 SYNOPSIS

use SL::SessionFile::Random;

# Create a session file with a unique random name
my $sfile = SL::SessionFile::Random->new(mode => "w");
$sfile->fh->print("col1;col2;col3\n" .
"value1;value2;value3\n");
$sfile->fh->close;

=head1 DESCRIPTION

This modules gives you a random file in the current session cache that is
guaranteed to be unique.

=head1 FUNCTIONS

same as SL::SessionFile

=head1 BUGS

NONE yet.

=head1 AUTHOR

Sven Schoeling E<lt>s.schoeling@linet-services.deE<gt>

=cut
    (1-1/1)