You ask why people would keep configurable things in source code? Well every time you try to pull configurable things out you pay the following costs:
- Code does not magically become non-code by being moved to a configuration file. And the more you move there, the harder it becomes to read. I could submit many Apache config files for examples.
- You have to add a layer of indirection to your code, making it harder to understand. Your code example is a demonstration.
- You increase how much "action at a distance" there is. Action at a distance makes code harder to read, errors harder to spot, and synchronization errors much more common.
This is not to say that moving stuff into configuration is necessarily bad. In fact it is good if you need to tweak that configurable thing frequently.
With that said, your program is the same as:
#! /usr/bin/perl -ni
BEGIN {
@ARGV = my $file = "hai";
die "File '$file' doesn't exist!" unless -e $file;
}
print
if s/HAI WORLD Times ([0-9]+).*/
"\t\t<exML LOLZ = \"" . unpack(\'a1\', $1) . "\" />"
/eg;
Yeah, it is a hack. But which hack would you prefer to maintain?
And a random note. Rather than eval you can just use a closure:
$replaceString = sub {
"\t\t<exML LOLZ = \"" . unpack(\'a1\', $1) . "\" />"
};
# time passes
$array[$elementIdx++] = $replaceString->();
This has a number of advantages, including much better performance, and the fact that errors are not accidentally trapped. (Trust me, if you're
evaling code from a configuration, you want to know if the configuration is bad.)
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.