如何在列之间插入分隔符?

How to insert separators between columns?

我在 @columns 中有列:

my @columns =('column1', 'column2', 'column3');

我在 @separators 中有分隔符:

my @separators = (',', '|');

我想在列之间插入分隔符,一一插入:

column1,column2|column

我的解决方案是:

(@columns »~» (|@separators,"")).join("")

这里我有三列和两个分隔符,在 N 列之间插入 N-1 分隔符怎么样?

假设 @separators 具有正确数量的值,您可以使用 roundrobin.

roundrobin( @columns, @separators ).flat.join()

所以这应该适用于任何长度的 @columns@separators :

首先我们使用 >>,>> 超级运算符来制作列表列表。

(@columns >>,>> @separators)

给出:

[("column1", ","), ("column2", "|"), ("column3", ",")]

然后我们用一张纸条把它压平成一个列表。

(@columns >>,>> @separators).map( |* )

给出:

("column1", ",", "column2", "|", "column3", ",").Seq

然后我们得到除最后一个值以外的所有值的数组:

(@columns >>,>> @separators).map(|*).head(*-1)

对于:

("column1", ",", "column2", "|", "column3")

终于白手起家了:

(@columns >>,>> @separators).map(|*).head(*-1).join("")

最终结果:

column1,column2|column3

更改列数或分隔符不会产生任何影响。

可能是另一个解决方案:

my @columns =('column1', 'column2', 'column3');
my @separators = (',', '|');
sub sep { $^a ~@separators[$++] ~$^b};
say [[&sep]] @columns;

say [[&sep]] @columns; # but another call cause error


Use of uninitialized value of type Any in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to something     meaningful.
in sub sep at <unknown file> line 1
in block <unit> at <unknown file> line 1

Use of uninitialized value of type Any in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to something  meaningful.
in sub sep at <unknown file> line 1
in block <unit> at <unknown file> line 1

column1column2column3