Establish a stream from Specification that should be closed
using Close, which can either be called or passed to
close_any/1. Options processed:
- encoding(Enc)
 - Set stream to encoding Enc.
 
Without loaded plugins, the open_any/5 processes the following
values for Specification. If no rule matches, open_any/5
processes Specification as file(Specification).
- Stream
 - A plain stream handle. Possisible post-processing options such
as encoding are applied. Close does not close the stream,
but resets other side-effects such as the encoding.
 
- stream(Stream)
 - Same as a plain Stream.
 
- FileURL
 - If Specification is of the form =file://...=, the pointed
to file is opened using open/4. Requires library(uri) to
be installed.
 
- file(Path)
 - Explicitly open the file Path. Path can be an Path(File)
term as accepted by absolute_file_name/3.
 
- string(String)
 - Open a Prolog string, atom, list of characters or codes
as an input stream.
 
The typical usage scenario is given in the code below, where
<process> processes the input.
setup_call_cleanup(
    open_any(Spec, read, In, Close, Options),
    <process>(In),
    Close).
Currently, the following libraries extend this predicate:
- library(http/http_open)
 - Adds support for URLs using the 
http and https schemes.