来自IO :: File的文件位置

时间:2011-06-14 17:54:46

标签: perl

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

1 个答案:

答案 0 :(得分:7)

您可以使用File::Temp

来实现这一目标
my $fh = File::Temp->new();
my $fname = $fh->filename;

如果是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
    ...

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