sierrathedog04 was
baffled recently about me saying I was going to patch Perl. Allow me to shed some light on the subject.
To patch Perl, you don't need to know very much C -- rather, you need to know a lot of perl. No, not Perl, but perl. The code for perl is written in C, and there are more macros in the code than you can imagine. I've never done any
really involving work with the perl source code, but I plan to in the future.
The problem I worked on most recently was putting a warning around the use of the
/o modifier with a
qr// object. There were several places that needed patching:
- toke.c - adding code to alert "Useless use of /o modifier" in the S_scan_pat() function
- pod/perldiag.pod - adding extended information about the warning (raised when use warnings 'syntax' is active
- pod/perlop.pod - adding information about the uselessness of qr//o
- t/warn/toke - adding tests to make sure the warning is raised
Only a little bit of actual C code was required. The rest, though, is just as important. The only reason Perl is documented as much as it is, is because
real people have spent time documenting it. When Perl changes, the documentation must change. Tests must be created to ensure the change works as expected, and doesn't break other things.
As for submitting the patch, P5P (the Perl5-Porters) prefer patches in "universal diff" format (
diff -u OLD NEW). After submitting my patch to
perl5-porters@perl.org, feedback comes in about something that I may not have handled correctly, or suggesting a different course of action. Finally, after things work and people are happy, Jarkko, the Perl Patch Pumpking, lets me know that my patch has been "applied, thanks."
What Perl did I patch? The most recent "snapshot" of version 5.7.1, also known as "bleadperl". This is the development branch of Perl 5.6.1, indicated by the odd number. (When Perl 5.8 comes out, development will occur in 5.9.)
For more information, read the
perlhack.pod documentation, found in the Perl 5.6 docs.
japhy --
Perl and Regex Hacker
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.