我可以从Perl中的文件句柄中找到一个文件名吗?

前端之家收集整理的这篇文章主要介绍了我可以从Perl中的文件句柄中找到一个文件名吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
open(my $fh,'>',$path) || die $!;
my_sub($fh);

my_sub()可以以某种方式从$ fh外推$路径吗?

解决方法

文件句柄甚至可能不连接到文件,而是连接到连接到子进程的标准输出的网络套接字或管道。

如果要将句柄与代码打开的路径相关联,请使用哈希和fileno运算符,例如,

my %fileno2path;

sub myopen {
  my($path) = @_;

  open my $fh,"<",$path or die "$0: open: $!";

  $fileno2path{fileno $fh} = $path;
  $fh;
}

sub myclose {
  my($fh) = @_;
  delete $fileno2path{fileno $fh};
  close $fh or warn "$0: close: $!";
}

sub path {
  my($fh) = @_;
  $fileno2path{fileno $fh};
}

猜你在找的Perl相关文章