The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
(def a 'b)
((fn [b & c]
  (def a 'c)
  (println a)
  (println b)
  (println c))
 'a 'c 'e
)
(defmacro c [a & d]
  `(println ~a))

(c 'b)
(c '(a b c) 'd)

(println (car '(a b c)))
(println (cdr '(a b c)))
(println (cons 'b '(a b c)))

(println (list 'b '(a b c)))

(println ['a 'b 'c])
(println {:abc 'b})

(println (length (list 'b '(a b c))))

(println (length ['a 'b 'c]))
(println (length {:abc 'b}))

(println (length "abcde"))

(println (! false))

(println (eq "a" "b"))
(println (eq "a\n" "a\n"))

(defmacro defn [name args & body]
  `(def ~name
     (fn ~args ~@body)))

(defn foo [a]
  (println a))

(if true
  (println 'true)
; ljfdljd
  (println 'false)) 

(if false
  (println 'true)
  (println 'false))

(def i 0)
(def cond true)
(println i)
(println (+ i 1))
(while cond
  (if (> i 3) (set! cond false))
  (set! i (+ i 1))
  (println i))

(foo "asjfl\tdjsdfd!") ;yyy

(foo 1233434)

(foo :abc)

(println (equal "a" 1))
(println (equal "a" "a"))
(println (equal () ()))
(println (equal :a :b))
(println (equal :a :a))
(println (equal 'a 'b))
(println (equal 'a 'a))


(def m {:abc 100})
(println (#::abc m))
(#::abc m 101)
(println (#::abc m))

(set! m [102 103])
(println (#:0 m))
(#:1 m 101)
(println (#:1 m))


(.CljPerl print "aaa\n")

(println (. print "bbb\n"))

(println (eval "(+ 1 2)"))

(def ^{:a 'b} m 1)
(println (meta m))
(println (type m))
(#::a (meta m) 'c)
(println (meta m))

(require "../lib/core.clp")

(defmulti mf type)
(println (meta mf))
(defmethod mf "string" [a] (println "string"))
(defmethod mf "keyword" [a] (println "keyword"))
(println (meta mf))
(mf "a")
(mf :b)

(apply println '(:a))

(defn bar [afn arg]
  (afn arg))

(bar println :b)

(def bar println)
(bar :bar)

(println (reduce (fn [a i]
  (cons (+ a 1) i))
  '()
  '(1 2 3)))

(set! i 0)
((fn [a] (set! a i)) 1)
(println i)

(meta i ^{:a 1})
(println (meta i))

(println (append "abc" "def"))
(println (append '(a b c) '(def)))
(println (append [:a :b :c] [:a :b :c]))
(println (append {:a :b} {:c :d}))

(println (keys {"a" :b :c :d}))
(println (#:"a" {"a" :b}))

(println (map (fn [i]
   (+ i 1))
  `(1 2 3)))

(namespace-begin "aaa")
(def aaa 0)
(println aaa)
(namespace-end)
(println aaa#aaa)

(ns "foo"
  (def bar0 'bar0)
  (defn bar []
    bar0))
(ns "bar"
  (def bar0 'bar1)
  (println (foo#bar)))

(. open ">t.txt" (fn [f]
  (println "bbbb")
  (. puts f "aaa")))

(println (clj->string {:a 'b}))

(println (gen-name))

(println `:aa)

(println (syntax `aa))

(let [a 1]
  (let [a 2
        b a]
    (println a)
    (println b)))

(def sender (fn [ & args] (println args)))

(#!"sender" "bbb")

(println #[abc ^{:abc "bb"} #[ccd]])

(println (match "(\\w)" "abc"))

(println (and true true))
(println (or true false))
(println (and true false))
(println (or false false))