1.问题描述:

总共90位长度的位流数据,其中只有5位的数据为1,其余位全部为0。统计好多组5位的简化数据(每一位之间空格隔开,每一组一行),将其扩展到90位。

 #!D:/EDA/Perl/bin
$path_in = "weiliu.txt";
$path_out = ">weiliu.dat";
open(FILE_IN,$path_in)||die"can not open the file: $!";
open(FILE_OUT,$path_out)||die"can not open the file: $!";
while ($eachline =<FILE_IN>) {
chomp $eachline;
@line = split(/\s+/,$eachline);
@line_91 = () x ;#初始化一个91位的全为0的数组
print("@line_91\n"); my $count=;
while($count <@line){ # ($count <@line)表示的是数组的元素个数
$line_91[$line[$count]-] = ;# @line中的值指示了@line_91中的对应位变为1.
$count++; # 数组中具体变量用:$数组名[索引值] 来表示.
}
print("@line_91\n"); my $line_new = join('',@line_91); #产生的90位数据之间不应该有空格,将空格合并掉.
print("$line_new\n");
print FILE_OUT ($line_new,"\n");
}
close FILE_IN;
close FILE_OUT;
print("hello world");

其中:

  $path_in = "weiliu.txt";
$path_out = ">weiliu.dat";
变量$path_in和$path_out分别指向要被读出来进行操作并最终写回的文本文件的路径。当然路径的话可以取绝对路径,不指出绝对路径,则默认是在当前目录下。
windows下路径用反斜杠(/)。如:"D:/Perl/test/example.pl"。或者"D:\\Perl\\test\\example.pl"
UNIX下用斜杠(\),双引号。
>表示写,一旦文件以写方式打开,他的内容将被删除,若要对文件进行追加内容,应该用>>。
  open(FILE_IN,$path_in)||die"can not open the file: $!";
open(FILE_OUT,$path_out)||die"can not open the file: $!";

perl通过文件句柄对文件进行操作 open(file_handle,file_name)。

  while ($eachline =<FILE_IN>) {

读入文件的每一行。保存在变量$eachline中。直到读出所有行,循环才结束。

@line = split(/\s+/,$eachline);
my $line_new = join('',@line_91);

split用于将一行文本拆分为数组,对数组的每个元素即可进行单独处理。

join将数组变量合并为变量。

     print("$line_new\n");
print FILE_OUT ($line_new,"\n");

通过句柄将变量输出到文件的每一行。

chomp $eachline;

chomp函数用于去掉字符串结尾的换行,chop用于去掉字符串最后一个字符(包括换行符)(记忆:m相当于加了约束,所以只去掉换行符)。

2.运行结果

3.总结

第一次写perl脚本,花了3个多小时,从print函数开始,到文件操作,基本上熟悉了基本的语法。终于完成了一个工作。以后的工作和学习中会继续探索Perl的用法。

最新文章

  1. Ora-01536:超出了表空间users的空间限量(转)
  2. sqoop导入hdfs上的数据到oracle
  3. 在Ribbon中,中文换行位置不对怎么办
  4. 【Google Protocol Buffer】Google Protocol Buffer
  5. bzoj1453
  6. boost------signals2的使用2(Boost程序库完全开发指南)读书笔记
  7. 2015ACM/ICPC亚洲区沈阳站 B-Bazinga
  8. vijos 1110小胖邮递员;bzoj 1210: [HNOI2004]邮递员
  9. git使用笔记1:结合Github远程仓库管理项目
  10. word20161229
  11. libguestfs手册(2):guestfish command
  12. 腾讯云“智能+互联网TechDay”:揭秘智慧出行核心技术与创新实践
  13. INTERVAL YEAR TO MONTH数据类型
  14. Go语言程序结构分析初探
  15. Java并发编程:Java创建线程的三种方式
  16. IPython Notebook 运行python Spark程序
  17. Java并发程序设计(十三)锁的性能优化
  18. 延时、输入输出接口P0~P3
  19. android include使用[转]
  20. MQTT的学习研究(十六) MQTT的Mosquitto的window安装部署

热门文章

  1. flex学习笔记 显示数字步进
  2. swfupload文件上传配置文件大小
  3. 01.GOF设计模式_概述
  4. leetcode1012
  5. VS2015 编译前/后拷贝文件到指定目录
  6. JavaScript随机生成信用卡卡号的方法
  7. YCSB性能测试工具使用(转)
  8. C++复习:异常
  9. jgGrid
  10. 一个关于EasyUI超恶心的BUG。。。Cannot read property &#39;options&#39; of undefined