来自IO :: File的文件位置

Ale*_*nii 0 perl

IO :: File-> new_tmpfile返回指向文件的IO :: File对象.是否可以在Windows上获取文件位置?

Iva*_*uev 7

您可以使用File :: Temp实现此目的:

my $fh = File::Temp->new();
my $fname = $fh->filename;
Run Code Online (Sandbox Code Playgroud)

如果是IO :: File,则无法获取临时文件名.IO :: File的源显示只有OutputStream存储在对象中:

void
new_tmpfile(packname = "IO::File")
    const char * packname
    PREINIT:
    OutputStream fp; ## it doesn't look like you can get file name out of this
    GV *gv;
    CODE:
#ifdef PerlIO
    fp = PerlIO_tmpfile();
#else
    fp = tmpfile();
#endif
    ...
Run Code Online (Sandbox Code Playgroud)

据我所知,并非所有流都有与之关联的文件名(例如管道).