I've dabbled a little in Haskel so I'm vaguely familiar with the concept of monads. Monads are a way to maintain state in functional languages. Perl is hardly functional, although with some contortions, it can be used in a functional manner. So why monads in Perl? It already has many ways to produce side effects. I guess the main reason is that it can be done and this article
shows how to do it.