【发布时间】:2017-09-09 00:13:24
【问题描述】:
我正在解析一个如下所示的文本文件:
ABCD
EFGH
IJKL
MNOP
QRST
UVWX
是否可以在 Perl 中以产生两个 4x3 数组的方式解析它?例如,array1[2][2] = Kand array2[0][1] = N。
代码:
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
open(FH, '<', 'gwas.txt') or die "Couldn't open file $!";
while(<FH>) {
#parse file into 2 arrays
}
close(FH);
【问题讨论】:
-
这是一个谜题吗?什么样的计数系统有
K和索引(2,4),N和(1,0)?你可以解释吗?但首先——你能告诉我们你做了什么以及你有什么问题吗?这里的问题应该是关于你的代码。 -
@zdim 我的错!刚刚修复了这些并添加了代码。
-
这样更好,谢谢(不过,我认为您的意思是
a[2][2] == K...?) 至于代码:您通过让数据结构携带references来制作多维结构> 每个插槽中的另一个。阅读参考资料:教程perlreftut,以及一本食谱perldsc。你想要数组的数组,在pelrdsc -
@zdim Jesus 哈哈哈,是的,我就是这个意思
-
因此,当您阅读文件时:在数组的第一个槽(第 1 行)中放置一个 arrayref - 对包含该行元素的数组的引用。该数组的第二个元素是对包含下一行字母的数组的引用,等等。所以,逐行进行。将每个分解成字母
(my @line = split '', $_),将对该数组的引用放在该行的“主”数组的元素中。 (例如,$a[$cnt] = \@line其中$cnt从零开始,等等。)等等。试一试。