我正在编写一个程序,如果没有提供命令行参数,即@ARGV == 0,程序将接收三个输入。但是,程序具有读取作为参数给出的任何文件的功能,因此
calculate input1 input2
对file1和file2中的数字运行公式。
我遇到的问题是我跑
的时候calculate < input1
@ARGV返回0,因此它运行用户输入的代码。
如何解决这个问题,以便程序可以读取input1并使用里面的值进行计算?
答案 0 :(得分:4)
calculate < input1
相当于cat input1 | calculate
。
您需要从<STDIN>
读取而不是查找命令行参数。
答案 1 :(得分:2)
那应该不是问题。如果你阅读<>
的读物(真的是<ARGV>
),那就没有区别了。
如果重定向发生了变化,你必须做错事。你实际上自己打开文件???
答案 2 :(得分:0)
您可以考虑使用Getopt::Euclid或Getopt::Long之类的模块来使参数传递更加明确。这可能会使程序更易于理解其他用户。