Bad perl is write only.
Good perl is a different matter.
With great expressiveness comes great ability to express how bad you are at writing maintainable code.
Unless you make it many small shell aliases, such as these:
urlescape () { perl -MURI::Escape -lne 'print uri_escape($_)' <<< "$1"; }
urlunescape () { perl -MURI::Escape -lne 'print uri_unescape($_)' <<< "$1"; }
Then you can reuse them often. :)
Reusable - I have always felt that Perl is a write-only language. :)