Arrays 在Perl中声明具有增量值的数组

Arrays 在Perl中声明具有增量值的数组,arrays,perl,shortcut,Arrays,Perl,Shortcut,我知道可以这样声明数组: my @array = ( 5 .. 10 ); 这相当于: my @array = ( 5, 6, 7, 8, 9, 10 ); 但是,当增量值大于1时,是否有类似的速记法 my @array = ( 5, 10, 15, 20, 25 ); my @array = ( 100, 200, 300, 400, 500 ); 及 更一般地说: my $start = 5; my $stop = 25; my $increment = 5; my @array =

我知道可以这样声明数组:

my @array = ( 5 .. 10 );
这相当于:

my @array = ( 5, 6, 7, 8, 9, 10 );
但是,当增量值大于1时,是否有类似的速记法

my @array = ( 5, 10, 15, 20, 25 );
my @array = ( 100, 200, 300, 400, 500 );

更一般地说:

my $start = 5;
my $stop = 25;
my $increment = 5;
my @array = map $start+$increment*$_, 0..($stop-$start)/$increment;
或:


(开玩笑。)

你也可以用达米安·康威的

use List::Maker;
我的@list=;

“my”variable@array在同一范围内屏蔽了先前的声明
:)@DVK,两个单独的示例,就像OP@ikegami-我知道,我是在讽刺。我进行了编辑,以消除任何可能的怀疑,即它们是分开的examples@DVK我知道我在这里是少数,但我仍然认为最好使用和阅读
{}
版本,
map{100*$}1..5
,因为您不希望在调用函数之前计算代码块,然而,当函数调用的参数列表中只有逗号分隔的第一个参数时,您肯定会这样做。是的,我知道这需要花费你一个区块设置。我不在乎,因为我发现它更易读,更不容易让人困惑,相反,这总是比过早的微优化更重要。我还希望有一天这会在编译器中得到优化。
my @array = map 100*$_, 1..5;
my $start = 5;
my $stop = 25;
my $increment = 5;
my @array = map $start+$increment*$_, 0..($stop-$start)/$increment;
chomp(my @array = `seq $start $increment $stop`);
use List::Maker;
my @list = <0..100 x 5>;