如何从重定向文件中读取而不是获取命令行参数

时间:2011-04-22 00:56:49

标签: perl command-line-arguments

我正在编写一个程序,如果没有提供命令行参数,即@ARGV == 0,程序将接收三个输入。但是,程序具有读取作为参数给出的任何文件的功能,因此

calculate input1 input2

对file1和file2中的数字运行公式。

我遇到的问题是我跑

的时候
calculate < input1

@ARGV返回0,因此它运行用户输入的代码。

如何解决这个问题,以便程序可以读取input1并使用里面的值进行计算?

3 个答案:

答案 0 :(得分:4)

calculate < input1相当于cat input1 | calculate

您需要从<STDIN>读取而不是查找命令行参数。

答案 1 :(得分:2)

那应该不是问题。如果你阅读<>的读物(真的是<ARGV>),那就没有区别了。

如果重定向发生了变化,你必须做错事。你实际上自己打开文件???

答案 2 :(得分:0)

您可以考虑使用Getopt::EuclidGetopt::Long之类的模块来使参数传递更加明确。这可能会使程序更易于理解其他用户。