How to Read from stdin in Elixir

Elixir is rather easy - as long as you get past the pattern matching barrier I stumpled into when writing about how to read program arguments.

The solution to this one was found on Elixir Sips though (you should really check that out, if you want to learn about elixir).

defmodule Reader do
  def read do
    case IO.read(:stdio, :line) do
      :eof -> :ok
      {:error, reason} -> IO.puts "Error: #{reason}"
      data ->
        IO.write(:stdio, data)
        read
    end
  end
end

Reader.read

Run it by calling elixir stdin.exs < stdin.exs and it will echo the source code back to you.

Related Posts