+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 named "customer.csv" (relative names only)
+ my $sfile = SL::SessionFile::Random->new("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