diff --git a/exprtk_simple_example_18.cpp b/exprtk_simple_example_18.cpp
new file mode 100644
index 0000000..afdd674
--- /dev/null
+++ b/exprtk_simple_example_18.cpp
@@ -0,0 +1,79 @@
+/*
+ **************************************************************
+ *         C++ Mathematical Expression Toolkit Library        *
+ *                                                            *
+ * Simple Example 18                                          *
+ * Author: Arash Partow (1999-2016)                           *
+ * URL: http://www.partow.net/programming/exprtk/index.html   *
+ *                                                            *
+ * Copyright notice:                                          *
+ * Free use of the Mathematical Expression Toolkit Library is *
+ * permitted under the guidelines and in accordance with the  *
+ * most current version of the Common Public License.         *
+ * http://www.opensource.org/licenses/cpl1.0.php              *
+ *                                                            *
+ **************************************************************
+*/
+
+
+#include <cstdio>
+#include <string>
+
+#include "exprtk.hpp"
+
+
+template <typename T>
+void file_io()
+{
+   typedef exprtk::symbol_table<T> symbol_table_t;
+   typedef exprtk::expression<T>     expression_t;
+   typedef exprtk::parser<T>             parser_t;
+
+   std::string fileio_program =
+                " var file_name := 'file.txt';                         "
+                " var stream    := null;                               "
+                "                                                      "
+                " if (stream := open('file.txt','w'))                  "
+                "   println('Successfully opened file: ' + file_name); "
+                " else                                                 "
+                " {                                                    "
+                "   println('Failed to open file: ' + file_name);      "
+                "   return [false];                                    "
+                " }                                                    "
+                "                                                      "
+                " var s := 'Hello world...\n';                         "
+                "                                                      "
+                " for (var i := 0; i < 10; i += 1)                     "
+                " {                                                    "
+                "   write(stream,s);                                   "
+                " }                                                    "
+                "                                                      "
+                " if (close(stream))                                   "
+                "   println('Sucessfully closed file: ' + file_name);  "
+                " else                                                 "
+                " {                                                    "
+                "   println('Failed to close file: ' + file_name);     "
+                "   return [false];                                    "
+                " }                                                    ";
+
+   exprtk::rtl::io::println<T>       println;
+   exprtk::rtl::io::file::package<T> package;
+
+   symbol_table_t symbol_table;
+   symbol_table.add_function("println",println);
+   symbol_table.add_package (package);
+
+   expression_t expression;
+   expression.register_symbol_table(symbol_table);
+
+   parser_t parser;
+   parser.compile(fileio_program,expression);
+
+   printf("Result %10.3f\n",expression.value());
+}
+
+int main()
+{
+   file_io<double>();
+   return 0;
+}
