广州明生医药有限公司


perl对长度不一文本的行列进行置换的实现代码

网络编程 perl对长度不一文本的行列进行置换的实现代码 06-21

有时遇到各行或各列的长度不一致时就麻烦了,虽然可以在R里面把文件按最长的行(列)填充,但是不便,所以想起用perl去实现一个。
由逗号分隔的不定长度的文本文件, 现要实现行列转置, 即由


1,2,3,4,5,6,
7,8,9,
10,11,12,13,
转换为:
1,7,10,
2,8,11,
3,9,12,
4, ,13,
5, , ,
6, , ,

以下是完整的代码,供大家参考。


#!/usr/bin/perl -w
my @matrix;
my $max_len = 0;
while(<DATA>){
chomp;
s/,$//g;
my @fields = split /,/, $_;
my $len = @fields;
$max_len = $max_len > $len ? $max_len : $len;
push @matrix, [@fields];
}
for my $col (0..$max_len - 1){
for my $line (@matrix){
print $line->[$col] || ' ', ',';
}
print "n";
}
__DATA__
1,2,3,4,5,6,
7,8,9,
10,11,12,13,

准备学习下,自己动手实现一遍,最好是做成模板,随调随用。

perl哈希hash的常见用法介绍
基本用法#初始化%h为空数组%h={};#用数组初始化%h为a=1,b=2%h=('a',1,'b',2);#意义同上,只是另一种更形象化的写法。%h=('a'=1,'b'=2);#如果key是字符串,可以省略

perl文件包含(do,require,use)指令介绍
1.do:1)形式:do'filename';说明:这里filename需要添加单引号,否则会出错;filename可以为任何后缀的,甚至没有后缀,不要求是pl或者pm等。2)关于do的理

分享下perl胶水实现前后台对接的方法
1.Perl胶水,能够将各种应用程序或者各种语言的代码结合起来。Perl可以编写普通的脚本程序,还可以使用cgi模块编写Web应用程序,同时可以使用DBI访问


编辑:广州明生医药有限公司

标签:胶水,数组,后缀,初始化,求是