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的用法。

perl-我的第一个程序的更多相关文章

  1. Android开发-之第一个程序:HelloWorld!

    小编觉得不管学习什么编程的时候,第一个程序都是要求打印输出一个"HelloWorld!",那就从最简单的HelloWorld开始吧!哈哈~~~~ 一.创建一个Android工程 1 ...

  2. [Fluent NHibernate]第一个程序

    目录 写在前面 Fluent Nhibernate简介 基本配置 总结 写在前面 在耗时两月,NHibernate系列出炉这篇文章中,很多园友说了Fluent Nhibernate的东东,也激起我的兴 ...

  3. rails再体验(第一个程序)

    掌握redmine plugin开发的目标在2016年未实现,2017年继续. 选择<Ruby on Rails Tutorial>教程,windows安装railsinstaller,该 ...

  4. OpenGL学习笔记1——第一个程序

    学习的参考书基本是按照GL编程指南,如果有消息机制概念,对于GLUT的理解是很自然的.下面就按照自己写的第一个程序详细解释一下GL,还是比较容易上手的. 程序实现的功能是,根据当前随即种子摇出来的结果 ...

  5. Android 第一个程序 及 环境搭配

    一. JDK配置 1.找到jdk安装路径 2.配置环境变量(建议配置在系统变量里面) 1).配置JAVA_HOME变量 2).配置 CLASSPATH 环境变量 CLASSPATH=.;%JAVA_H ...

  6. unix 网路编程(卷一)第一个程序编译过程

    unix卷一去年暑假买的到现在才开始看无比惭愧,而且惭愧第一个程序就断断续续弄了几天,要好好写程序了,马上要找工作了,下面介绍下把本书第一个程序跑起来的过程: 搜各种博客 我用系统的是ubuntu 1 ...

  7. Hadoop学习历程(三、第一个程序)

    根据之前的操作,我们已经可以正常的启动Hadoop了,关于真正的集群我会在之后进行说明.现在我们来看一下第一个程序吧 1. 在eclipse上建立一个java项目 2. 将 /usr/hadoop/s ...

  8. Python2.7.3 学习——第一个程序 Hello Python World

    Hello World 每学一门语言开始的第一程序都是Hello World ,当然了Python也不例外,下面开始我们的Python第一个程序编写: 1,命令行: (1)打开终端,输入python, ...

  9. 【 D3.js 入门系列 — 1 】 第一个程序 HelloWorld

    记得以前刚上大一学 C 语言的时候,写的第一个程序就是在控制台上输出 HelloWorld .当时很纳闷,为什么要输出这个.老师解释说所有学编程入门的第一个程序都是在屏幕上输出 HelloWorld, ...

  10. 【C语言探索之旅】 第三课:你的第一个程序

    内容简介 1.课程大纲 2.第一部分第三课:你的第一个程序 3.第一部分第四课预告:变量的世界 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个 ...

随机推荐

  1. HTML+CSS盒模型

    一.Padding 1.padding用来调整内容在容器中的位置关系:padding的属性要添加到父元素上. padding值是额外加在元素原有的大小之上的,若想保证元素大小不变,需从元素宽或高上  ...

  2. 机器学习进阶-直方图与傅里叶变换-傅里叶变换(高低通滤波) 1.cv2.dft(进行傅里叶变化) 2.np.fft.fftshift(将低频移动到图像的中心) 3.cv2.magnitude(计算矩阵的加和平方根) 4.np.fft.ifftshift(将低频和高频移动到原来位置) 5.cv2.idft(傅里叶逆变换)

    1. cv2.dft(img, cv2.DFT_COMPLEX_OUTPUT) 进行傅里叶变化 参数说明: img表示输入的图片, cv2.DFT_COMPLEX_OUTPUT表示进行傅里叶变化的方法 ...

  3. Python_02 基本数据类型、while循环

    1.基本数据类型 1.字符串(引号内): name=“我是Manuel” name='我是Manuel' name="""Manuel""" ...

  4. BBS-基于forms组件和ajax实现注册功能

    http://www.cnblogs.com/yuanchenqi/articles/7638956.html 1.设计注册页面 views.py from django import forms c ...

  5. 网关、子网掩码、DHCP, DNS

    都跟ip地址相关,IP地址构成:网络地址+主机地址 子网掩码可以确定网络地址,例如某IP:192.168.1.102 子网掩码:255.255.255.0, 那么网络地址就是192.168.1,主机地 ...

  6. 文件操作 freopen函数

    转自http://blog.csdn.net/zhuyi2654715/article/details/6963673 当我们求解acm题目时,通常在设计好算法和程序后,要在调试环境(例如VC等)中运 ...

  7. (FireDAC) 连接定义

     Defining Connection (FireDAC) 连接定义就是应用程序使用特定的FireDAC驱动连接数据库的参数集合.相当于BDE的别名,ADO的UDL,或者ODBC的DSN. For ...

  8. Oracle相关文章

    1.oracle 11g常用命令 2.Oracle的在windows下的安装及使用 3.Oracle scott账户被锁定,scott默认密码,sys,system默认密码 4.NaviCat Pri ...

  9. 【原创】思科和锐捷组建多VLAN交换网络(隧道模式Trunk)

    组建简单交换网络设计与实施 [利用思科仿真与锐捷实践] 本文目录 第一部分 预备知识 第二部分 设计与仿真 需求分析 整体设计 PT仿真 第三部分 施工部署 console配置 连通测试 第一部分 预 ...

  10. 重装unbantu 问题集合,下载别人的代码运行问题集合

    安装angular 的时候要全局设置 npm install -g angular-cli nodemon server.js 出现[nodemon] Internal watch failed:xx ...