(def fich "data.txt")
(def urls2 (vec nil))
(defn readf [file]
(let [x (vec nil)]
(with-open [r (clojure.java.io/reader file)]
(doseq [line (line-seq r)]
(conj urls2 (re-find #"\w+\.\w+" line))))))
(defn -main []
(do
(readf fich)
(println urls2)))
For example, check out the behavior of this:
(def urls2 (atom []))
(swap! urls2 conj "http://foo.bar")
(defn lines->urls [lines] (mapv #(re-find #"\w+\.\w+" %) lines))
You could then define your file reading code in terms of that pure function:
(lines->urls (line-seq r))))