#+begin_src prep
#@ ```
#@ printf "one\ntwo\nthree\n"           > /tmp/list.txt
#@ printf " # commented line\n"        >> /tmp/list.txt
#@ printf "1\n2\n3\n"                  >> /tmp/list.txt
#@ printf "# another commented line\n" >> /tmp/list.txt
#@ printf "Not a commented # line\n"   >> /tmp/list.txt
#@ printf "1.0\n2.0\n3.0"              >> /tmp/list.txt
#@ ```
#+end_src
#+begin_src cfengine3
bundle agent example_readstringlist
# @brief Example showing readstringlist()
{
  vars:
    "my_list_of_strings"
      slist => readstringlist(
        "/tmp/list.txt",
        # File to read
        "^\s*#[^\n]*",
        # Exclude hash comment lines lines
        "\n",
        # Split on newlines
        inf,
        # Maximum number of entries
        inf
      );

  # Maximum number of bytes to read
  reports:
    "my_list_of_strings includes '$(my_list_of_strings)'";
}

bundle agent __main__
{
  methods:
    "example_readstringlist";
}

#+end_src
#+begin_src example_output
#@ ```
#@ R: my_list_of_strings includes 'one'
#@ R: my_list_of_strings includes 'two'
#@ R: my_list_of_strings includes 'three'
#@ R: my_list_of_strings includes '1'
#@ R: my_list_of_strings includes '2'
#@ R: my_list_of_strings includes '3'
#@ R: my_list_of_strings includes 'Not a commented # line'
#@ R: my_list_of_strings includes '1.0'
#@ R: my_list_of_strings includes '2.0'
#@ R: my_list_of_strings includes '3.0'
#@ ```
#+end_src
