加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 21:14:40 所属栏目:大数据 来源:网络整理
导读:好的,所以我对Perl很新.我有一个文本文件,在文件中有4列数据(日期,时间,文件大小,文件).我需要创建一个可以打开文件并获取文件的平均大小的小脚本.我已经读了很多在线,但我仍然无法弄清楚如何做到这一点.这是我到目前为止,但我不知道我是否接近正确地做到这
好的,所以我对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 $totaln";

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

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 $totaln";
print "The count is $countn";
print "The average is ",$total / $count,"n";

产量

The total is 124533
The count is 3
The average is 41511

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读