use v6; my $data = q[colname1 colname2 colname3 val1 val2 val3 val11 val21 val31 val12 val22 val32]; my @lines = $data.split: "\n"; my @rows; my @header = @lines.shift.words; for @lines -> $l { my %h = @header Z $l.words; @rows.push: {%h}; } say @rows.perl; my @colname = ; say @colname.join("\t"); say $_{@colname}.join("\t") for @rows;