2

Web サイトに 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...

バックティック問題の非同期実行の問題かどうかも確認しましたが、スタックオーバーフローに関する私の調査から、それは問題ではないようです。私もこれを試しました:

#!/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...

私はこの同様の問題をここで見つけましたが、質問者と同じ問題を抱えているようには見えません...ここまで読んでくれてありがとう。

4

1 に答える 1

4

このエラーは、の末尾に改行があることを示しています$filen。それ以外の場合は次のようになります。

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 XXXXXXXXX.

次の方法で削除します。

chomp $filen;
于 2013-07-29T09:18:34.117 に答える