honestly it's not only hard to read it's using some suboptimal techniques.
about readability:
- please consider using perltidy to reformat your code, it solves most problems afoken mentioned
- use blank lines between logical steps, see commenting in chunks in Perl Best Practices
- take care about naming conventions and clarity
hasref seems to mean hash_ref but reads like a boolean has_a_reference
- avoid deeply nested code!
e.g. using a dispatcher like $cmd{$line}->() with %cmd=('**'=>\&dump_readme,'*'=>...)
- prefer self commenting code, like moving code chunks into well named subs
about commenting
- be sure which audience you are targeting whith your comments
- you seem to mix POD stuff (i.e. for the user) and dev-comments and (sorry) banalities,
- line quantity doesn't equal quality
about techniques:
- your begin block is huge and I'm puzzled why (?) ¹
- your repeatedly looping with $_ over most of your lines, that's very vulnerable to bugs
- &sub() in Perl5 is usable in the rare cases where you need to ignore prototypes
All these mentioned problems keep me away to read more and to try it out.²
In general I'm sure you would love to have a look into Damian's PBP book.
This book helped me a lot understanding the traps in Perl and I hope it'll help you too! :)
Cheers Rolf
(addicted to the Perl Programming Language and ☆☆☆☆ :)
Updates
¹) if you need to check UserAgent within BEGIN, I'd consider using a second BEGIN block
2) I.e. the top-down structure is hidden
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.