我有几个巨大的文本文件,我需要转换。我在使用Array::Transpose来达到这个目的时被困住了--但不知怎么我还是不能结束.这是我的源代码:
#!/usr/bin/perl
use warnings;
use strict;
use Array::Transpose;
my $eachline;
my $input=$ARGV[0];
my @array;
open (IN, "<$input") or die ("no such file!");
while(defined($eachline=<IN>))
{
push @array, split(/\t/,$eachline);
}
my @array2=transpose(\@array);我看不出,这个想法有什么问题,就像文件上说的:
use Array::Transpose;
@array=transpose(\@array);错误代码说:
Can't use string ("") as an ARRAY ref while "strict refs" in use at /usr/local/share/perl/5.14.2/Array/Transpose.pm line 91, <IN> line 3.我在编程方面几乎是新手,尤其是在Perl方面。我真的不明白这个错误意味着什么。我对任何有用的答案都很满意!
干杯,新手!
编辑:我忘记说的是:我的输入文件写着:
Parameter1 \t Parameter2 \t .... ParameterXY \n
Value1 \t Value2... 诸若此类。
我想要一个输出文件,上面写着:
Parameter1 \t Value1 \t .....ValueXY \n
Parameter2 \t Value2 \t......发布于 2014-03-10 12:38:28
您需要分别推送每一行。
my @row = split(/\t/,$eachline);
push @array, \@row;@row是一个一维数组.推\@row制作二维阵列.我认为您还需要一个chomp来删除行尾。
完整程序是
#!/usr/bin/perl
use warnings;
use strict;
use Array::Transpose;
use Data::Dumper;
my $eachline;
my $input=$ARGV[0];
my @array;
open (IN, "<$input") or die ("no such file!");
while(defined($eachline=<IN>))
{
chomp $eachline ;
my @row = split(/\t/,$eachline);
push @array, \@row;
}
print Dumper(\@array) ;
my @array2=transpose(\@array);
print Dumper(\@array2) ;另一种方法是push @array, [ split(/\t/,$eachline) ] ; -- [ ]创建一个数组引用。
https://stackoverflow.com/questions/22299488
复制相似问题