Как читать из перенаправленного файла вместо принятия параметров командной строки - PullRequest
1 голос
/ 22 апреля 2011

Я пишу программу, в которой, если аргументы командной строки не указаны, например @ARGV == 0, программа принимает три входа.Но программа имеет функцию чтения любых файлов, заданных в качестве аргументов, поэтому

calculate input1 input2

запускает формулу для чисел, найденных в file1 и file2.

Проблема, с которой я сталкиваюсь, заключается в том, что я запускаю

calculate < input1

@ ARGV возвращает 0, таким образом он запускает код для пользовательского ввода.

Как мне обойти это, чтобы программа могла читать input1 и использовать значения внутри для вычислений?

Ответы [ 3 ]

4 голосов
/ 22 апреля 2011

calculate < input1 эквивалентно cat input1 | calculate.

Вам нужно читать из <STDIN> и не искать аргументы командной строки.

2 голосов
/ 22 апреля 2011

Это не должно быть проблемой. Если вы читаете чтение из <> (что на самом деле <ARGV>), то нет никакой разницы.

Вы должны делать что-то не так, если перенаправление меняет дело. Вы сами открываете файлы ???

0 голосов
/ 22 апреля 2011

Вы можете использовать модуль типа Getopt :: Euclid или Getopt :: Long , чтобы сделать передачу аргумента более явной. Это может облегчить понимание программы и другими пользователями.

...