У меня странная проблема с использованием File::Temp
:
Я запускаю свой perl-скрипт под mod_perl в Apache в Linux, Apache работает с рабочим mpm.
my ($fh_error, $error)
= tempfile("error_XXXXXXXXXXXXXXXX",DIR => "/home/tmp", UNLINK => 1);
my ($fh_src, $src)
= tempfile("src_XXXXXXXXXXXXXXXX",DIR => "/home/tmp", UNLINK => 1, SUFFIX => ".html");
my ($fh_dst, $dst)
= tempfile("dst_XXXXXXXXXXXXXXXX",DIR => "/home/tmp", UNLINK => 1, SUFFIX => ".html");
Большую часть времени все вроде бы в порядке, но время от времени я получаю неправильные имена файлов. Вместо того, чтобы получить истинное случайное имя файла, я получаю одну и ту же букву для всей длины шаблона.
Например
error_AAAAAAAAAAAAAAAA
src_AAAAAAAAAAAAAAAA
dst_AAAAAAAAAAAAAAAA
Все 3 файла получают одинаковое имя. За исключением того, что это просто странно (и вы никогда не хотите, чтобы ваш код был странным), я боюсь, что это может привести к чтению/записи в один и тот же файл для разных запросов.
/dev/urandom
все равно должен давать хорошие псевдослучайные числа. Они просто не будут криптографически стойкими (т. е. с N последовательными случайными числами вы теоретически могли бы определить лучшие шансы на то, что может быть N + 1, для достаточно большого N). - person Joe Z   schedule 10.07.2013