Юлия: Трубопроводный ввод для обработки из строки - PullRequest
0 голосов
/ 05 апреля 2019

В моем коде Julia я хочу вызывать различные внешние команды, которые получают данные из стандартного ввода и выводят вывод при стандартном выводе.Я хотел бы хранить данные в строках, чтобы они читались и записывались в эти процессы.Для определенности, скажем, процесс tr [a-z] [A-Z].Моя оболочка будет

function toupper(string)
    fn, fh = mktemp()
    print(fh, string)
    close(fh)
    result = pipeline(fn, `tr [a-z] [A-Z]`) |> readstring
    rm(fn)
    result
end

(это синтаксис Julia 0.6; замените readstring на io->read(io,String))

Я бы хотел более чистый способ сделать это;в идеале, команда printer(string), которая создает поток, производящий содержимое строки, так что указанная выше команда будет закодирована как

toupper(string) = pipeline(printer(string), `tr [a-z] [A-Z]`) |> readstring

(Действительно, будет много команд, подобных приведенным выше, иИз соображений эффективности я бы хотел избежать создания и удаления всех этих временных файлов)

1 Ответ

0 голосов
/ 05 апреля 2019

ОК, я нашел это: принтер (строка) может быть закодирован как IOBuffer(string).

...