前段时间,因为工作需要,使用perl脚本对一个txt文件做了一些处理。

需要处理的txt文件inputfile.txt结构是:
#col1 col2 col3 col4 col5
1_1   1_2  1_3  1_4  1_5
2_1   2_2  2_3  2_4  2_5
3_1   3_2  3_3  3_4  3_5
4_1   4_2  4_3  4_4  4_5
5_1   5_2  5_3  5_4  5_5

处理之后的txt文件outfile.txt结构是:
#col1 col2 col3 col4 col5
1_1,1_2,1_3,1_4,1_5
2_1,2_2,2_3,2_4,2_5
3_1,3_2,3_3,3_4,3_5
4_1,4_2,4_3,4_4,4_5
5_1,5_2,5_3,5_4,5_5

这个处理是非常简单的,很快就解决了问题。为了简单介绍一下perl脚本的使用方式,故借用这个例子,对其实现过程做以介绍,希望能起到抛砖引玉的作用。

脚本的实现代码如下所示,其中添加了不少注释以解释实现过程。

#$numArgs:numArgs前面加上“$”表示声明变量。
$numArgs = @ARGV; #获取传递参数的个数,注意,需要除去这两个:perl.exe和perl_do.pl
if(numArgs != 3)
{
    print "Usage: perl.exe perl_do.pl inputfile.txt outfile.txt inputfile_cols";#输出信息的一种方式
    exit(1);
}
$inputFile = $ARGV[0];#第一个参数:inputfile.txt
@inputFileArray;#定义了一个数组
$outputFile = $ARGV[1];#第二个参数:outfile.txt
$input_cols = $ARGV[2];#第三个参数:inputfile_cols

mainProcess();#主处理函数
exit(0); #退出整个程序

#该函数是打开文件inputfile.txt,将其中内容读取到数组inputFileArray中
sub getInputFile()
{
    if(not open(INFILE, $inputFile))#打开文件inputfile.txt
    {
       print("Cann't open file $inputFile!/n");#输出信息的另一种方式
       return 1;
    }
    @inputFileArray = <INFILE>;#将文件inputfile.txt中内容读取到数组inputFileArray中
    return 0;
}

sub mainProcess()
{
    my $input_line;#声明变量
    my $input_size;
    my $i;
    my $batfile = "test.bat";  
    my $list = "";

if(getInputFile())
    {
      print "getInputFile fail!/n";
      return 1;
    }
    if(not open(BATFILE, ">$batfile"))
    {
      print("cann't open file $batfile!/n");
      return 1;
    }
    $isFirstLine = 1;
    foreach $input_line(@inputFileArray)#循环处理文件inputfile.txt中的每一行数据
    {
      $config_linecount++;
      $input_line = ~ s//t/ /;#获取非注释行数据
      chomp($input_line);
      while($input_file = ~ s/^ ){}
      next if($input_file = ~ /^#/);
      next if($input_file = ~ /^!/);
      next if($input_file = ~ /^$/);
      $_ = $input_line;
      @input_list = m//w+/g;
      $input_size = $input_list;
      for($i = 0; $i < $input_cols; $i++)
      {
        if($i ne ($input_cols -1))#ne表示不等于
        {
          $list = $list.$input_list[$i].",";#.用来连接两个变量,$input_list[$i]表示第i个数据
        }
        else
        {
          $list = $list.$input_list[$i];
        }
      }
      if(1 == $isFirstLine)
      {
        print BATFILE "echo $list 1>$outputFile/n";#>表示创建新文件并写入数据
        $isFirstLine = 0;
      }     
      else
      {
        print BATFILE "echo $list 1>>$outputFile/n";#>>表示追加数据
      }
      $list = "";
    }
    system("$batfile");#执行batfile
}

上述代码应该写入perl_do.pl。

建立一个bat文件,写入如下信息:
perl.exe perl_do.pl inputfile.txt outfile.txt 5
注意:执行该bat文件,必须得有perl.exe,perl56.dll和perl58.dll。

使用perl脚本语言处理文本文件相关推荐

  1. perl脚本语言学习

    来公司的第二个星期便看了一下perl语言,发现掌握一门脚本语言还是非常有用的.到现在为止已经入职两个月,用perl脚本做了这些活: 1. 修改了公司的一个爬取网页源代码的脚本 2. 改进了一个出特征库 ...

  2. Perl脚本语言(一)

    一.简介 1.全称:Practical Extraction and Report Language(实用报表提取语言) 2.特点:简单快速开发,使用最广泛的脚本语言. 3.报表:向上级报告的表格. ...

  3. Perl/CGI脚本语言编程学习资料及开发工具下载大全

    Practical Extraction and Report Language Perl 最初的设计者为拉里·沃尔(Larry Wall),它于1987年12月18日发表.Perl借取了C.sed. ...

  4. 脚本语言语言脚本语言:Shell , JavaScript、VBScript、Perl、PHP、Python、Ruby、Lua

    今天一直在研究脚本语言语言之类的问题,上午正好有机会和大家共享一下. 脚本语言:Shell , JavaScript.VBScript.Perl.PHP.Python.Ruby.Lua 工作控制语言和 ...

  5. Perl,Python,Ruby,Javascript 四种脚本语言比较

    Perl 为了选择一个合适的脚本语言学习,今天查了不少有关Perl,Python,Ruby,Javascript的东西,可是发现各大阵营的人都在吹捧自己喜欢的语言,不过最没有争议的应该是Javascr ...

  6. perl php python 速度,Perl,Php,python等各种脚本语言现状

    Perl,Php,python等各种脚本语言现状 文章作者:网友投稿 发布时间:2008-09-01 13:38:51 来源:网络 曾经程序语言世界里的二等公民,脚本语言(也叫动态语言)正成为开发者的 ...

  7. 动态语言开发环境python_GitHub - lcyan26/Script.NET: 脚本语言集成开发环境,支持Tcl、Python、Perl、Ruby、Lua等脚本语言。...

    Script.NET介绍 Script.NET是蓝蚂蚁工作室开发的一套集成开发环境(可用于Tcl.Python.Perl.Ruby.Lua等脚本语言开发),最新的4.0版本已经在github上开源. ...

  8. 会linux基本命令是脚本语言吗,如何理解Linux Shell和基本Shell脚本语言?

    理解Linux Shell: shell:一个命令行解释器,通过执行命令或脚本,帮助用户与操作系统打交道. process:进程,用户执行的任务是进程,但进程不只是任务. file:文件放在硬盘上,包 ...

  9. 把C++当脚本语言写

    把C++当脚本语言写! 提到脚本,脑海里马上闪过一大堆:Python,Perl,Ruby,PHP,JS,VBS,LUA... 不过你有没听说过,用经典的C++做脚本语言吗?先不多说,上个图.(先别纠结 ...

最新文章

  1. c语言多线程mysql_多线程读写mysql数据库
  2. oraclf 复杂查询练习_刷完这些烧脑的SQL练习题,复杂查询才能熟能生巧
  3. c primer plus--数据和C(第3章)--习题
  4. 3.8 Softmax 回归-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
  5. CYQ.Data 轻量数据访问层(八) 自定义数据表实现绑定常用的数据控件(中)
  6. [转]粵語固有辭彙與漢語北方話辭彙對照
  7. 使用canal实现MySQL 8 增量同步数据到 ElasticSearch 7.15.2中 linux
  8. 神奇的国度(HYSBZ-1006)
  9. mongodb占内存过大情况处理
  10. 创意网页排版设计和教程分享,打造 “视”不可挡的网页设计
  11. 自动化测试之—Hamcrest匹配器
  12. 载入java VM时windows出现错误:2 的解决方法
  13. RHEL 7 修改网卡的ip地址
  14. IP错误引起MongoDB副本集初始化失败
  15. 中国古代木制机器发展简史
  16. 怎么把画好的流程图插入到Word中?
  17. WIN10 家庭版 安装DOCKER 遇到问题:THIS COMPUTER DOESN'T HAVE VT-X/AMD-V ENABLED
  18. Linux运维技术之详解任务计划(crontab命令)
  19. 人工智能工程师的三个层次
  20. 驭势科技携手奇辉机器人,联合发布面向多行业的智慧物流整体解决方案

热门文章

  1. 水题挑战3:NOIP 2017 宝藏
  2. 微信小程序之toast等弹框提示
  3. 硕士卖房,到底是行业内卷,还是自我突破
  4. linux lsmod命令详解
  5. Mysql官方网站到底该如何下载、安装?(超详细教程)
  6. 以太网交换机性能测试丢包的原因
  7. 删除数组最后一个元素
  8. NVL函数,NVL2函数的使用,查询日期天数
  9. 2016中欧绿色和智慧城市奖正式启动
  10. 保险经纪人是什么鬼?