使用Perl在文本文件中对一列数字进行求和

前端之家收集整理的这篇文章主要介绍了使用Perl在文本文件中对一列数字进行求和前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
好的,所以我对Perl很新.我有一个文本文件,在文件中有4列数据(日期,时间,文件大小,文件).我需要创建一个可以打开文件获取文件的平均大小的小脚本.我已经读了很多在线,但我仍然无法弄清楚如何做到这一点.这是我到目前为止,但我不知道我是否接近正确地做到这一点.
#!/usr/bin/perl

open FILE,"files.txt";
#@array = File;

while(FILE){
    #chomp;

    ($date,$time,$numbers,$type) = split(/ /,<FILE>);

    $total += $numbers;

}
print"the total is $total\n";

这是数据在文件中的外观.这些只是其中的几个.我需要在第三列中获取数字.

12/02/2002  12:16 AM              86016 a2p.exe
10/10/2004  11:33 AM               393 avgfsznew.pl
11/01/2003  04:42 PM             38124 c2ph.bat

解决方法

你的程序相当接近工作.通过这些更改,它将完全符合您的要求

>始终在程序开始时使用严格的使用警告,并使用我的声明所有的变量.这将帮助您找到许多简单的错误,您可能会忽略它
>使用词法文件句柄,三参数形式打开,并始终检查任何打开调用的返回状态
>在循环之外声明$total变量.在循环中声明它意味着它将在循环周围被创建和销毁,并且它将无法累积一个总数
>以相同的方式声明$count变量.您将需要它来计算平均值
>使用while(FILE){…}只是测试FILE是真的.您需要从中读取,因此您必须使用readline操作符,如< FILE>
>您希望将默认调用拆分(没有任何参数),这将返回$_中的所有非空格字段作为列表
>您需要在赋值中添加一个变量,以允许在每一行中的AM或PM字段

这是您的代码修改,工作正常

use strict;
use warnings;

open my $fh,'<',"files.txt" or die $!;

my $total = 0;
my $count = 0;

while (<$fh>) {

    my ($date,$ampm,$type) = split;

    $total += $numbers;
    $count += 1;

}

print "The total is $total\n";
print "The count is $count\n";
print "The average is ",$total / $count,"\n";

产量

The total is 124533
The count is 3
The average is 41511
原文链接:https://www.f2er.com/Perl/172779.html

猜你在找的Perl相关文章