私は以下のようなコードを持っています。関数(によって呼び出される)でファイル$File::Find::name
(この場合は./tmp/tmp.h
)を開くと、「ファイルを開くことができません。/tmp/tmp.hreason=temp.plの36行目98行目にそのようなファイルまたはディレクトリはありません。 。」search
File::Find::find
別の関数でファイルを直接開くと、ファイルを開くことができます。誰かがこの振る舞いの理由を教えてもらえますか?Windowsでactiveperlを使用していますが、バージョンは5.6.1です。
use warnings;
use strict;
use File::Find;
sub search
{
return unless($File::Find::name =~ /\.h\s*$/);
open (FH,"<", "$File::Find::name") or die "cannot open the file $File::Find::name reason = $!";
print "open success $File::Find::name\n";
close FH;
}
sub fun
{
open (FH,"<", "./tmp/tmp.h") or die "cannot open the file ./tmp/tmp.h reason = $!";
print "open success ./tmp/tmp.h\n";
close FH;
}
find(\&search,".") ;