加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在perl 5.6之后,Symbol :: gensym是否仍然有用?

发布时间:2020-12-15 22:05:05 所属栏目:大数据 来源:网络整理
导读:我看到这样的代码: my $fh = gensym; open $fh,"$name" or die "Can't create $name: $!"; 可以写成: open my $fh,"$name" or die "Can't create $name: $!"; gensym是遗产还是在某些场合仍然有用? 解决方法 遗产.旧模块有时需要全球而不是词汇,但就是这
我看到这样的代码:
my $fh = gensym;                                             
open $fh,">$name" or die "Can't create $name: $!";

可以写成:

open my $fh,">$name" or die "Can't create $name: $!";

gensym是遗产还是在某些场合仍然有用?

解决方法

遗产.旧模块有时需要全球而不是词汇,但就是这样.
use IPC::Open3 qw( open3 );
open(local *CHILD_STDIN,'<','/dev/null') or die $!;
my $pid = open3(
   '<&CHILD_STDIN',my $CHILD_STDOUT = gensym(),my $CHILD_STDERR = gensym(),$cmd,@args,);

第二个想法,你也可以使用它们来创建别名(虽然Data::Alias可以用词法来做).

my $foo;
our $bar; local *bar = $foo;
$foo = 123; say $bar;  # 123
$bar = 456; say $foo;  # 456

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读