Я использую библиотеку обуви для запуска куска кода ruby и обнаружил, что он обрабатывает рубиновый код, который он запускает как входной файл, и, таким образом, не позволяет мне получать STDIN больше (поскольку ARGF разрешает ввод файлов ИЛИ STDIN, но, по-видимому, не оба).Получение и ввода файлов и STDIN из ARGF?
Есть ли все-таки переопределить это? Мне говорят, что perl, например, позволяет вам читать из STDIN после того, как буфер IO пуст.
Edit:
Я имел некоторый успех с «-» особого имени файла символ, который, по-видимому является сигналом для переключения на STDIN в командной строке.
Предыдущая форма вопроса: Разбиты ли ботинки ARGF?
Используя обычный Ruby, я могу читать либо файлы, либо Standard In с ARGF. С помощью обуви я могу читать только файлы. Все, что от стандартного, просто игнорируется. Он питается стандартным, или есть другой способ получить к нему доступ?
Примеры строк кода: либо отдельно в рубиновом файле, либо внутри приложения для обуви в обуви.
#ruby testargf.rb aus.txt is the same as ruby testargf.rb<aus.txt
#but isn't in shoes. shoes only prints with the first input, not the second
ARGF.each do |line| #readLine.each has same result
puts line
end
Или обувь:
#shoes testargfshoes.rb aus.txt should be the same as <aus.txt but isn't.
Shoes.app(title: "File I/0 test",width:800,height:650) do
ARGF.each do |line| #readLine.each has same result
puts line
para line
end
end
В ретроспективе, я также вижу дальнейшее различие между обуви и Руби: обувь также выводит исходный код программы я бегу вместе с любым файлы, которые я передаю. Если я попытаюсь ввести файл в стандартный, ТОЛЬКО исходный код печатается.
Я предполагаю, что это означает, что приложение для обуви принимает мою программу в качестве входного сигнала, а затем не дезинфицирует (или как бы правильное слово) ввод, когда он передает его вместе с моим кодом. Это, похоже, усиливает мою гипотезу «Обувь ест стандартное в», поскольку она явно использует стандарт In для чего-то. Я предполагаю, что это может занять два файл подряд, но не один файл, а затем ссылка на стандарт в
Я могу подтвердить, что Рубин без обуви обеспечивает одинаковое поведение, если я смешиваю входной файл и STDIN с:.
ruby testargf.rb aus_simple.txt < testargf.rb
могли бы вы предоставить исполняемый пример? – Stefan
Да. См. Отредактированный вопрос. – Jenny
Убедитесь, что есть пробел после 'do' и indent, используя два пробела. –