Readonly is a lovely module, but a small caveat about Readonly - if you don't have control over the Perl interpreter that will be running your script, you may suffer a significant performance penalty using Readonly, espcially if your script or application needs to use the constants to process large batches of information (e.g. Bioinformatics)

According to the documentation, Readonly is about 20x slower than Constant unless it dedetcts the module Readonly::XS is installed. If the XS module is installed, then scalar readonly constants will be about the same speed as non-scalar constants (the XS modules simply flips the scalar's read-only bit in the underlying C-code). However, this works only for scalar constants. For all other constants (arrays, hashes) you still have the speed penalty.

If your script will run on a statically installed version of Perl, you will have to recompile the Perl binary to include the XS module (it isn't part of the standard compile). To include XS module in dynamically linked Perl interpreters, you at least need permission to compile and install C libraries - not always a straight forward matter in corporate environments or when you are developing for a client environment rather than one you have personal control over.


In reply to Re^4: why doesn't constant work? by ELISHEVA
in thread why doesn't constant work? by perl-diddler

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • 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:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.