Keine automatische filename generierung?

Hallo Leute,
toll, dass es dieses Forum gibt.
hier mein problem:
im rahmen eines kleinen e-commerce projektes wird eine email aus den bestelldaten des kunden erzeugt und an meine email adresse geschickt. das klappt auch gut. das unten aufgeführte perl-script soll aber auch noch den gleichen inhalt (bestelldaten) als attachement anhängen *.osm (MS-WORD erzeugt daraus autoamtisch eine Rechnung. Vorgesehen ist die automatische filename generierung 1.osm, 2.osm … …(vermutlich aus datum/zeit). damit eine doppelter filename nicht vorkommen kann. heraus kommt immer 974.OSM (bei diesem script).
Jede Hilfe ist willkommen.
Gruß und danke schon jetzt
Rene

beginn script--------
#!/usr/bin/perl

$mailprog = „/usr/sbin/sendmail“;
$date = „/bin/date“;

&ReadParse;
&processOrder;
&print_danke;
exit(0);

sub processOrder {
$boundary = time;
@str = ();
push(@str,"| $mailprog -t");
$AuthUserFile = „/kunden/homepages/0/dXXXXXXX/htpasswd“;
foreach $str (@str) {
open(FILE, $str) || &return_failed_file_open($str);
print FILE „To: $in{‚To‘}\n“;
print FILE „From: $in{‚From‘}\n“;
print FILE „Reply-To: $in{‚From‘}\n“;
print FILE „Subject: $in{‚Subject‘}\n“;
print FILE „X-Mailer: www.mein-webshop.com E-Mail-Client Version 1.0\n“;
print FILE „MIME-Version: 1.0\n“;
print FILE „Content-Type: multipart/mixed; boundary=“_" . $boundary . „_“\n\n";
print FILE „–_“ . $boundary . „_\n“;
print FILE „Content-Type: text/plain; charset=„us-ascii“\n\n“;
print FILE „$in{‚Message‘}\n“;
print FILE „–_“ . $boundary . „_\n“;
print FILE „Content-Type: text/plain; charset=„us-ascii“\n“;
print FILE „Content-Disposition: attachment; filename=„order“ . $boundary . „.osm“\n\n“;
print FILE „$in{‚Attachment‘}\n\n\n“;
print FILE „–_“ . $boundary . „_\n“;
close(FILE);
}
}

sub print_danke {
print „Content-type: text/html\n\n“;
print qq|

$in{‚Subject‘}

Bestellung erfolgreich übertragen!

|;
}

sub return_failed_file_open {
print „Content-type: text/html\n\n“;
print „Couldn’t open file $_[0]: $!“;
exit(1); }

sub ReadParse {
if (@_) {
local (*in) = @_;
}
local ($i, $loc, $key, $val);

Read in text

if ($ENV{‚REQUEST_METHOD‘} eq „GET“) {
$in = $ENV{‚QUERY_STRING‘};
} elsif ($ENV{‚REQUEST_METHOD‘} eq „POST“) {
read(STDIN, $in, $ENV{‚CONTENT_LENGTH‘});
}

Puffern des Input

$in_buffer = $in;
@in = split(/&/,$in);
foreach $i (0 … $#in) {

Convert plus’s to spaces

$in[$i] =~ s/+/ /g;

Convert %XX from hex numbers to alphanumeric

$in[$i] =~ s/%(…)/pack(„c“,hex($1))/ge;

Split into key and value.

$loc = index($in[$i],"=");
$key = substr($in[$i],0,$loc);
$val = substr($in[$i],$loc+1);
$in{$key} .= ‚\0‘ if (defined($in{$key})); # \0 is the multiple separator
$in{$key} .= $val;
}
return 1; # just for fun
}
end script -----

Hallo Rene!

Vorgesehen ist die
automatische filename generierung 1.osm, 2.osm …
…(vermutlich aus datum/zeit). damit eine doppelter filename
nicht vorkommen kann.

Wo genau soll dieser Dateiname generiert werden?
Hast Du das Script selbst geschrieben?

An Datum und Zeit kommst Du ohne direkten Zugriff auf
/bin/date
doch auch über die Perl-Funtkion localtime:

($sec,$min,$hour,$mday,$mon,$year,$wday) = (localtime(time))[0,1,2,3,4,5,6];

Dann kannst Du theoretisch einfach die relevanten Werte an den bestehenden Dateinamen anhängen, wird zwar lang, aber auch eindeutig.

Gruss, Ingo