diff --git a/changes.txt b/changes.txt
--- a/changes.txt
+++ b/changes.txt
@@ -1,4 +1,10 @@
-0.1.2.3
+0.1.2.5
+-------
+
+- Released Mon 13 Jul 2015 12:08:13 CEST
+- added perl syntax (requested by larsen).
+
+0.1.2.4
 -------
 
 - Released Wed 24 Jun 2015 07:48:28 CEST
diff --git a/doc/usr/page.rst b/doc/usr/page.rst
--- a/doc/usr/page.rst
+++ b/doc/usr/page.rst
@@ -136,9 +136,10 @@
 - haskell source files (``.hs``, ``.lhs``)
 - C source files (``.c``, ``.h``), C++ (``.cpp``, ``.hpp``), Java (``.java``)
 - javascript source files (``.js``)
+- pascal source files (``.pas``, ``.pp``, ``.inc``)
 - python source files (``.py``)
 - ruby source files (``.rb``)
-- pascal source files (``.pas``, ``.pp``, ``.inc``)
+- perl source files (``.pl``, ``.pm``, ``.t``)
 - plain text files (``.txt``)
 
 Every other file-type will get ignored! Contact me if you need another
diff --git a/issues.txt b/issues.txt
--- a/issues.txt
+++ b/issues.txt
@@ -1,33 +1,29 @@
 doc/dev/issues.txt
     10  from String to Text? [feature:advanced]
-    11  colorise output on regexps? [feature:advanced]
-    12  allow different markups [feature:advanced]
-    13  recognize module names [feature:advanced]
-    14  have stuff linked to haskell-platform friendly e non template
+    11  have stuff linked to haskell-platform friendly e non template
         haskell and stuff [feature:intermediate]
-    16  html report, come hlint [feature:advanced]
-    17  symlinks? [feature:intermediate]
-    18  check --output pretty, there are trailing white spaces [bug] [u:1]
-    19  test con 7.6.3 [feature:basic] [test]
-    20  linux kernel, lentil si inceppa su dei caratteri [bug]
-    21  da cabal a hpack [u:1] [feature:advanced]
-    22  ad oggi veramente lento [u:2] [refactor]
-    23  sm: issue numbers is valuable [design] [request]
-    24  sm: have a way to link to discussion/history of issue [design]
+    13  html report, come hlint [feature:advanced]
+    14  symlinks? [feature:intermediate]
+    15  check --output pretty, there are trailing white spaces [bug] [u:1]
+    16  test con 7.6.3 [feature:basic] [test]
+    17  linux kernel, lentil si inceppa su dei caratteri [bug]
+    18  da cabal a hpack [u:1] [feature:advanced]
+    19  sm: issue numbers is valuable [design] [request]
+    20  sm: have a way to link to discussion/history of issue [design]
         [request]
-    25  sm: 1. lentil autogenerates numbers where missing adding tags, 2.
+    21  sm: 1. lentil autogenerates numbers where missing adding tags, 2.
         creates an associated numbered file in .issues/, displays
         associated notes written in those files is asked, 3. even update
         them when there is a source change. (4) these files could be
         webserved when they want something linkable. Vedi comments in
         doc/dev/issues.txt [design] [request]
-    31  chickpea, lentil's brother. Two commands, add number to numberless
+    27  chickpea, lentil's brother. Two commands, add number to numberless
         tag (#1212 or something), create a mini db with those issues, which
         automatically updated and you can even write stuff in there. O
         maybe you can even add lentil, chickpea and quinoa. Vedi more in
         doc/dev/issues.txt [design]
-    37  make it lazy in ouputting todos [refactor]
-    38  way to 'group' (section) output by tag [feature:advanced]
+    33  make it lazy in ouputting todos [refactor]
+    34  way to 'group' (section) output by tag [feature:advanced]
  
 src/Lentil/Args.hs
     23  disambiguation optparse-applicative [feature:intermediate]
@@ -38,33 +34,23 @@
     51  combine funziona su windows? [feature:intermediate]
  
 src/Lentil/Parse/Issue.hs
-    23  e che fare quando il todo segue un * come nei commenti lunghi c?
-        [design]
-    63  add this to (ciString ancillaries?) [refactor]
-   114  usa spaces non ' ' [fixme]
-   156  specifica meglio [fixme]
+   109  usa spaces non ' ' [fixme]
+   151  specifica meglio [fixme]
  
 src/Lentil/Parse/Run.hs
-    31  a function String -> [Issue]
-    72  change '\n' trick [refactor] [duct]
+    32  a function String -> [Issue]
+    73  change '\n' trick [refactor] [duct]
  
 src/Lentil/Parse/Syntaxes.hs
-    19  add langparsers che sia estensibile e leggibile a compilazione
+    21  add langparsers che sia estensibile e leggibile a compilazione
         [u:2] [feature:intermediate]
-    35  multiline signature? [lint]
-    36  tag at the beginning too? [design]
+    37  multiline signature? [lint]
+    38  tag at the beginning too? [design]
  
 src/Main.hs
     35  add doc to use less -r when piping hIsTerminalDevice stdout [doc]
  
-test/Lentil/ArgsSpec.hs
-    12  can't test lOpts, need to make a runner and a validator on the
-        output from io [test]
- 
 test/Tests.hs
-     3 
-   http://hackage.haskell.org/package/nanospec-0.2.1/docs/Test-Hspec.html
-   use this? [refactor]
-     6 
+     4 
    http://hackage.haskell.org/package/mockery-0.3.0/docs/Test-Mockery-Directory.html
    instead of folder use this? [refactor]
diff --git a/lentil.cabal b/lentil.cabal
--- a/lentil.cabal
+++ b/lentil.cabal
@@ -1,5 +1,5 @@
 name:                lentil
-version:             0.1.2.4
+version:             0.1.2.5
 synopsis:            frugal issue tracker
 description:         minumum effort, cohesive issue tracker based on
                      ubiquitous @TODO@s and @FIXME@s conventions.
@@ -20,6 +20,7 @@
                      test/test-files/lang-comm/pascal.pas,
                      test/test-files/lang-comm/python.py,
                      test/test-files/lang-comm/ruby.rb,
+                     test/test-files/lang-comm/perl.pl,
                      test/test-files/lang-comm/test.txt,
                      test/test-files/lang-comm/text.txt,
                      test/test-files/specific/contiguous.c,
diff --git a/src/Lentil/Parse/Issue.hs b/src/Lentil/Parse/Issue.hs
--- a/src/Lentil/Parse/Issue.hs
+++ b/src/Lentil/Parse/Issue.hs
@@ -20,10 +20,6 @@
 import Prelude -- 7.8 hack
 
 
--- TODO: e che fare quando il todo segue un * come nei commenti
---       lunghi c? [design]
-
-
 -----------
 -- TYPES --
 -----------
@@ -60,7 +56,6 @@
 -- PRIMITIVE --
 ---------------
 
--- TODO: add this to (ciString ancillaries?) [refactor]
 -- case insensitive string, lifted from Text.ParserCombinators.Parsec.Rfc2234
 ciString :: String -> ParIssue String
 ciString s = mapM ciChar s <?> "case insensitive string"
@@ -111,7 +106,7 @@
 incipit = char '\n' >> spaces >>
           fwpar               >>= \fw ->
           optional (char ':') >>
-          many1 (char ' ')    >> -- fixme usa spaces non ' '
+          many1 (char ' ')    >>
           return fw
           <?> "incipit"
     where
@@ -150,10 +145,11 @@
 freeText :: ParIssue Description
 freeText = fmap htmlify (manyTill anyChar end) <?> "free text"
     where vp p      = try . parsecMap (const ()) $ p
-          end       = lookAhead $ choice [vp (spaces *> tag),
-                                          vp blankline,
-                                          vp incipit,
-                                          vp eof] -- fixme specifica meglio
+          end       = lookAhead $ choice [vp (spaces1 *> tag),
+                                          vp blankline, -- \n\n or \neof
+                                          vp incipit, -- another issue
+                                          vp eof]
+          spaces1 = space *> spaces
 
 tags :: ParIssue [Tag]
 tags = many1 (try $ spaces *> tag) <?> "tags"
diff --git a/src/Lentil/Parse/Syntaxes.hs b/src/Lentil/Parse/Syntaxes.hs
--- a/src/Lentil/Parse/Syntaxes.hs
+++ b/src/Lentil/Parse/Syntaxes.hs
@@ -27,16 +27,19 @@
               | ext `elem` [".cpp", ".hpp"]        = Just c -- C++
               | ext `elem` [".java"]               = Just c -- Java
               | ext `elem` [".js"]                 = Just javascript
+              | ext `elem` [".pas", ".pp", ".inc"] = Just pascal
               | ext `elem` [".py"]                 = Just python
               | ext `elem` [".rb"]                 = Just ruby
-              | ext `elem` [".pas", ".pp", ".inc"] = Just pascal
+              | ext `elem` [".pl", ".pm", ".t"]    = Just perl
               | ext `elem` [".txt"]                = Just text
               | otherwise                          = Nothing
     where ext = SF.takeExtension fp
 
 -- todo multiline signature? [lint]
 -- todo tag at the beginning too? [design]
-haskell, c, javascript, pascal, python, ruby, text :: ParSource [CommentString]
+haskell, c, javascript, pascal, python, ruby :: ParSource [CommentString]
+perl :: ParSource [CommentString]
+text :: ParSource [CommentString]
 haskell    = source $ ParSyntax ["--"] [("{-", "-}")] ['"']  ['\'']
 c          = source $ ParSyntax ["//"] [("/*", "*/")] ['"']  ['\'']
 javascript = source $ ParSyntax ["//"] [("/*", "*/")] ['"', '\''] []
@@ -44,7 +47,8 @@
                                         ("(*", "*)")] ['\''] []
 python     = source $ ParSyntax ["#"]  [("\"\"\"",
                                          "\"\"\"")]   ['"', '\''] []
-ruby       = source $ ParSyntax ["#"] [("=begin",
-                                         "=end")]      ['"', '\''] []
+ruby       = source $ ParSyntax ["#"]  [("=begin",
+                                         "=end")]     ['"', '\''] []
+perl       = source $ ParSyntax ["#"]  []             ['"', '\''] []
 text       = (:[]) . MultiLine 1 <$> many anyChar
 
diff --git a/src/Main.hs b/src/Main.hs
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -28,7 +28,7 @@
                                    short 'v'      <>
                                    help "show version and copyright info" )
     where
-          versionCopy = "lentil - a frugal issue tracker, version 0.1.2.4\n\
+          versionCopy = "lentil - a frugal issue tracker, version 0.1.2.5\n\
                         \(C) 2015 Francesco Ariis - http://www.ariis.it\n\
                         \released under the GNU General Public License 3\n"
 
diff --git a/test/Lentil/ArgsSpec.hs b/test/Lentil/ArgsSpec.hs
--- a/test/Lentil/ArgsSpec.hs
+++ b/test/Lentil/ArgsSpec.hs
@@ -9,9 +9,6 @@
 
 -- TEST VARS --
 
--- TODO: can't test lOpts, need to make a runner and a validator on
---       the output from io [test]
-
 testOpt :: LOptions
 testOpt = LOptions (["alpha"], ["beta"]) Csv
                    [filterFilepath "al", filterTagless]
diff --git a/test/Lentil/Parse/IssueSpec.hs b/test/Lentil/Parse/IssueSpec.hs
--- a/test/Lentil/Parse/IssueSpec.hs
+++ b/test/Lentil/Parse/IssueSpec.hs
@@ -119,6 +119,9 @@
     it "issues declared with fixme get a free [fixme] tag" $
       sp issue "\nfixme blah\n"
          `shouldBe` (Just $ Issue "<f>" 2 "blah" [Tag "fixme"])
+    it "doesn't parse tags non separated by a space" $
+      sp issue "\ntodo blah[f]\n"
+         `shouldBe` (Just $ Issue "<f>" 2 "blah[f]" [])
 
   describe "issues" $ do
     it "parses multiple issues" $
diff --git a/test/Lentil/Parse/RunSpec.hs b/test/Lentil/Parse/RunSpec.hs
--- a/test/Lentil/Parse/RunSpec.hs
+++ b/test/Lentil/Parse/RunSpec.hs
@@ -58,6 +58,9 @@
     it "parses a ruby source" $
         fileParser "test/test-files/lang-comm/ruby.rb"
             `shouldReturn` spt "test/test-files/lang-comm/ruby.rb"
+    it "parses a perl source" $
+        fileParser "test/test-files/lang-comm/perl.pl"
+            `shouldReturn` spt "test/test-files/lang-comm/perl.pl"
 
   describe "issueFinder" $ do
     it "reads a file (code or txt) for issues" $
diff --git a/test/Tests.hs b/test/Tests.hs
--- a/test/Tests.hs
+++ b/test/Tests.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_GHC -F -pgmF hspec-discover #-}
 
--- TODO: http://hackage.haskell.org/package/nanospec-0.2.1/docs/Test-Hspec.html
---       use this? [refactor]
 
 -- TODO: http://hackage.haskell.org/package/mockery-0.3.0/docs/Test-Mockery-Directory.html
 --       instead of folder use this? [refactor]
diff --git a/test/test-files/lang-comm/perl.pl b/test/test-files/lang-comm/perl.pl
new file mode 100644
--- /dev/null
+++ b/test/test-files/lang-comm/perl.pl
@@ -0,0 +1,11 @@
+# TODO: single
+# comment
+# todo single2
+
+c = "st/*ring" # string
+letter = 'c' # char
+
+# todo block1
+#   TODO: block2 [tog]
+
+#  end
