## three rows of data, with items separated by spaces
my @input = ( 'a b', 'b c', 'c d' );
## six rows, one column of expected output
my @expected_output = ( 'a', 'b', 'b', 'c', 'c', 'd' );
将此作为预期的输入和输出,编写转换代码的一种方法是:
## create an array to store the output of the transformation
my @output;
## loop over each row of input, separating each item by a single space character
foreach my $line ( @input ) {
my @items = split m/ /, $line;
push @output, @items;
}
## print the contents of the output array
## with surrounding bracket characters
foreach my $item ( @output ) {
print "<$item>\n";
}
#!/usr/bin/env perl
use warnings;
use strict;
my @array1 = (
['a', 'b'],
['b', 'c'],
['c', 'd'],
);
# "flatten" the nested data structure by one level
my @array2 = map { @$_ } @array1;
# see that the result is correct
use Data::Dumper;
print Dumper \@array2;
4条答案
按热度按时间s71maibg1#
您的问题措辞有些含糊,这可能是因为您是perl新手。您还没有提供perl语法中的输入或预期输出,但根据您对之前答案的回答,我将进行猜测:
将此作为预期的输入和输出,编写转换代码的一种方法是:
有关split和push详细信息,请参阅perldoc。
bttbmeg02#
weylhg0b3#
这里有另一个选项:
输出量:
map
对@array
中的列表进行操作,对其中的每个元素应用正则表达式(匹配非空白字符),以生成一个新列表,并将其放入@array2
中。6ie5vjzr4#
对初始数据的另一种可能的解释是,你有一个数组引用的数组。这“看起来”像一个2D数组,因此你会谈论“行”。如果是这种情况,那么试试这个