可以在Perl中的哈希声明中使用子例程返回值(作为数组)吗?

时间:2012-08-30 04:11:45

标签: perl grep hashtable subroutine

已经有一段时间了,为我生锈的问题道歉...

鉴于当前(工作)代码:

my @keywords = ( 'foo', 'bar', 'kan', 'moo', 'ban', 'noob' );    
my @good = grep { /oo/ } @keywords;
my @bad = grep { !/oo/ } @keywords;

my %data = (
  keywords => \@keywords,
  good => \@good,
  bad => \@bad
);

print Dumper(\%data);

声明只是瞬态变量,以确保散列以数组引用结束。有没有办法合并上面的内容来简单地使用哈希声明中的方法?

我正试图达到类似以下内容(非工作代码):

my @keywords = ( 'foo', 'bar', 'kan', 'moo', 'ban', 'noob' );    

my %data = (
  keywords => \@keywords,
  good => grep { /oo/ } @keywords,
  bad => grep { !/oo/ } @keywords
);

print Dumper(\%data);

1 个答案:

答案 0 :(得分:8)

是的,只需使用匿名数组引用

my %data = (
  keywords => [@keywords],
  good => [grep { /oo/ } @keywords],
  bad => [grep { !/oo/ } @keywords],
);

print Dumper(\%data);