在perl脚本命令行中添加一个选项

时间:2012-10-17 06:00:27

标签: perl

假设这是file.txt

Name:Lab1:Lab2:Lab3:Lab4:Lab5:Lab6:Exam1:Exam2:Final

Annette Adams :8:24:19:24:10:12:43:35:98
Mary Beard:9:30:19:23:10:14:29:39:87
Antoinette Brown:9:16:18:22:9:12:19:31:79
.
.
.

是否可以在Perl中编写一个脚本,其中包含一些用户可以传递给命令行并获得结果的选项。

例如getAverage.pl -l 3 file.txt打印Lab3标记的平均值。

如果有可能整个过程是什么?

2 个答案:

答案 0 :(得分:2)

尝试http://perldoc.perl.org/Getopt/Long.html来自文档:

  

Getopt :: Long模块实现了一个名为的扩展getopt函数   GetOptions()。此函数遵循命令的POSIX语法   行选项,GNU扩展。一般来说,这意味着选项   有长名称而不是单个字母,并带有一个   双击" - "。支持捆绑命令行选项,如同   提供了更传统的单字母方法的情况   但默认情况下未启用。

有关在Perl中访问命令行选项的一般信息,请阅读perlvar文档:http://perldoc.perl.org/perlvar.html#$ARGV

答案 1 :(得分:-1)

我在python中整理了一个快速而肮脏的解决方案。应该很容易将它移植到perl。

import sys
lines = open("file.txt",'r').readlines()
if len(sys.argv) > 2 and sys.argv[1] == "-l":
    try:
        number = int(sys.argv[2])
    except:
        print "Input a number after the -l switch."

    average = 0

    for i in lines:
        try:
            average += int(i.split(":")[number])
        except:
            pass

    average /= 3

    print "The average score for %s is %d" \
    %(lines[0].split(":")[number], average)

else:
    print "Computer says no."