Я использую скрипт CGI для своего сайта. И у меня проблема с открытием динамически сгенерированного файла. Вот код:Перл открывает динамически сгенерированные файлы
#!/usr/bin/perl
my @output = `/export/es_share/Zhou/./notification_finder.sh range $date $time $range $ulh TestProd1 $actionname`;
my $filen = $output[0];
open(my $result, "<", $filen) or die "Can't open $filen - $!";
Do something with the file...
Всегда выходит из строя, с выходом:
Can't open /var/tmp/notification-finder-1375086676-658183725.tmp -
No such file or directory at /var/www/cgi-bin/appsupport/logapp_test/perltest.cgi line X.
Хотя, как это удается:
#!/usr/bin/perl
open(my $result, "<", /var/tmp/notification-finder-1375086676-658183725.tmp) or die "Can't open $filen - $!";
Do something with the file...
Я также проверил, был ли это проблема асинхронного выполнения проблемы backticks, но из моих исследований в stackoverflow это, похоже, не проблема. Я также попытался это:
#!/usr/bin/perl
my @output = `/export/es_share/Zhou/./notification_finder.sh range $date $time $range $ulh TestProd1 $actionname`;
sleep(10);
my $filen = $output[0];
open(my $result, "<", $filen) or die "Can't open $filen - $!";
Do something with the file...
Я нашел это similar issue here, но я, кажется, не имеют те же проблемы, что и Аскер ... Спасибо за чтение этого далеко.
Может быть, вы можете использовать что-то вроде [ 'File :: Temp'] (http://search.cpan.org/perldoc?File%3A%3ATemp). – TLP
@TLP может, пожалуйста, уточнить немного больше? Я новичок в Perl. :) – Juto
Нет, боюсь, я никогда не использовал этот модуль. Я не уверен, что вы можете использовать его в этом контексте, передав имя временного файла системной команде. – TLP