Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 在数组中插入中间元素_Perl - Fatal编程技术网

Perl 在数组中插入中间元素

Perl 在数组中插入中间元素,perl,Perl,在数组的每个现有元素之间插入元素的最佳方式是什么。到目前为止,我所掌握的最好信息如下: my @array = ( 1 , 'foo', { }, [ ] ); my @new_array; push @new_array, $_, ', ' for @array; pop @new_array; 实际上,@array包含HTML::Element对象和字符串的混合体,这些对象和字符串被传递到HTML::Element的拼接_content方法,目的是用逗号分隔元素内容的一部分。如何: my

在数组的每个现有元素之间插入元素的最佳方式是什么。到目前为止,我所掌握的最好信息如下:

my @array = ( 1 , 'foo', { }, [ ] );
my @new_array;
push @new_array, $_, ', ' for @array;
pop @new_array;
实际上,
@array
包含HTML::Element对象和字符串的混合体,这些对象和字符串被传递到HTML::Element的
拼接_content
方法,目的是用逗号分隔元素内容的一部分。

如何:

my @array = ( 1 , 'foo', { }, [ ] );
(undef, my @new_array) = map {; ', ' => $_ } @array;

这利用了一个鲜为人知的事实,即您可以在列表赋值的左侧使用
unde
,表示您不关心该元素。(映射{;中的分号是为了让解析器理解这是一个块而不是hashref。)

我想我应该使用映射而不是循环的
,但是保持你的
pop

my @new_array = map { $_, ', ' } @array;
pop @new_array;

这不是一个坏方法。我想这会有所帮助,但您仍然需要创建
(',')的数组x$#array
作为替代项,因此这看起来并不是一个很大的节省。感谢您的zip建议,通过
列表查看解决方案:*
模块并没有在我脑海中出现。非常好的替代方案。在您修复分号之前,我一直在对生成的语法错误感到困惑。在我的脑海深处,我想摆脱它我不喜欢流行音乐,但这种解决方案肯定能让意图清晰。