在perl 5.6之后,Symbol :: 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

相关文章

1. 如何去重 #!/usr/bin/perl use strict; my %hash; while(...
最近写了一个perl脚本,实现的功能是将表格中其中两列的数据...
表的数据字典格式如下:如果手动写MySQL建表语句,确认麻烦,...
巡检类工作经常会出具日报,最近在原有日报的基础上又新增了...
在实际生产环境中,常常需要从后台日志中截取报文,报文的形...
最近写的一个perl程序,通过关键词匹配统计其出现的频率,让...