perl-我的第一个程序
1.问题描述:
总共90位长度的位流数据,其中只有5位的数据为1,其余位全部为0。统计好多组5位的简化数据(每一位之间空格隔开,每一组一行),将其扩展到90位。
1 #!D:/EDA/Perl/bin 2 $path_in = "weiliu.txt"; 3 $path_out = ">weiliu.dat"; 4 open(FILE_IN,$path_in)||die"can not open the file: $!"; 5 open(FILE_OUT,$path_out)||die"can not open the file: $!"; 6 while ($eachline =<FILE_IN>) { 7 chomp $eachline; 8 @line = split(/\s+/,$eachline); 9 @line_91 = (0) x 90;#初始化一个91位的全为0的数组 10 print("@line_91\n"); 11 12 my $count=0; 13 while($count <@line){ # ($count <@line)表示的是数组的元素个数 14 $line_91[$line[$count]-1] = 1;# @line中的值指示了@line_91中的对应位变为1. 15 $count++; # 数组中具体变量用:$数组名[索引值] 来表示. 16 } 17 print("@line_91\n"); 18 19 my $line_new = join('',@line_91); #产生的90位数据之间不应该有空格,将空格合并掉. 20 print("$line_new\n"); 21 print FILE_OUT ($line_new,"\n"); 22 } 23 close FILE_IN; 24 close FILE_OUT; 25 print("hello world");
其中:
2 $path_in = "weiliu.txt"; 3 $path_out = ">weiliu.dat";
变量$path_in和$path_out分别指向要被读出来进行操作并最终写回的文本文件的路径。当然路径的话可以取绝对路径,不指出绝对路径,则默认是在当前目录下。
windows下路径用反斜杠(/)。如:"D:/Perl/test/example.pl"。或者"D:\\Perl\\test\\example.pl"
UNIX下用斜杠(\),双引号。
>表示写,一旦文件以写方式打开,他的内容将被删除,若要对文件进行追加内容,应该用>>。
4 open(FILE_IN,$path_in)||die"can not open the file: $!"; 5 open(FILE_OUT,$path_out)||die"can not open the file: $!";
perl通过文件句柄对文件进行操作 open(file_handle,file_name)。
6 while ($eachline =<FILE_IN>) {
读入文件的每一行。保存在变量$eachline中。直到读出所有行,循环才结束。
@line = split(/\s+/,$eachline); my $line_new = join('',@line_91);
split用于将一行文本拆分为数组,对数组的每个元素即可进行单独处理。
join将数组变量合并为变量。
20 print("$line_new\n"); 21 print FILE_OUT ($line_new,"\n");
通过句柄将变量输出到文件的每一行。
chomp $eachline;
chomp函数用于去掉字符串结尾的换行,chop用于去掉字符串最后一个字符(包括换行符)(记忆:m相当于加了约束,所以只去掉换行符)。
2.运行结果
3.总结
第一次写perl脚本,花了3个多小时,从print函数开始,到文件操作,基本上熟悉了基本的语法。终于完成了一个工作。以后的工作和学习中会继续探索Perl的用法。
本文来自博客园,作者:hematologist,转载请注明原文链接:https://www.cnblogs.com/littleMa/p/5310941.html
posted on 2016-03-23 14:22 hematologist 阅读(380) 评论(0) 编辑 收藏 举报