gcc for AIX are widely available.
At the moment of writing, AIX supports two different native C compilers,
-for which you have to pay: B<xlc> and B<VAC>. If you decide to use eiter
+for which you have to pay: B<xlc> and B<VAC>. If you decide to use either
of these two (which is quite a lot easier than using gcc), be sure to
upgrade to the latest available patch level. Currently:
=head2 Using GNU's gcc for building perl
-We're woking on this using gcc-3.0 ... (any input highly appreciated)
+We're working on this using gcc-3.0 ... (any input highly appreciated)
=head2 Using Large Files with Perl
This will automatically accept all the defaults and
in particular /usr/local/ as installation directory.
Note that GCC-2.95.x rev(DG/UX) knows the switch
--pthread whcih allows it to link correctly DG/UX's
+-pthread which allows it to link correctly DG/UX's
-lthread library.
-If you want to change the installtion directory or
+If you want to change the installation directory or
have a standard DG/UX with C compiler GCC-2.7.2.x
then you have no choice than to do an interactive
build by issuing the command:
will not create a "perl.exe" to replace the one in C<($DJDIR)/bin>.
When you are done, the XS-module install process will have added information
-to yout "perllocal" information telling that the perl binary has been replaced,
+to your "perllocal" information telling that the perl binary has been replaced,
and what module was installed. you can view this information at any time
by using the command:
the perl installation drive first. You can even provide a script with
a special commandline, if needed.
-Alternativly you can get ESHELL from symbian:
+Alternatively you can get ESHELL from symbian:
http://developer.epocworld.com/downloads/progs/Eshell.zip
Running ESHELL you can enter: perl -de 0 in order to run the perl
You can stop a running perl process in the task list by closing the
application `STDOUT'. You cannot stop a running perl process if it has
-not written anyting to stdout or stderr! Be very cautious with I/O
+not written anything to stdout or stderr! Be very cautious with I/O
redirection. You will have to reboot the PDA!
=head1 USING PERL ON EPOC
=item *
-system() does not inherit ressources like: file descriptors,
+system() does not inherit resources like: file descriptors,
environment etc.
=item *
=head2 Using perl as shipped with HP-UX
As of application release September 2001, HP-UX 11.00 is shipped with
-perl-5.6.1 in /opt/perl. The first occurrance is on CD 5012-7954 and
+perl-5.6.1 in /opt/perl. The first occurrence is on CD 5012-7954 and
can be installed using
swinstall -s /cdrom perl
hints provided for HP-UX during Configure will try very hard to get
this right for you.
-HP-UX versions before 10.30 require a seperate installation of a POSIX
+HP-UX versions before 10.30 require a separate installation of a POSIX
threads library package. Two examples are the HP DCE package, available
on "HP-UX Hardware Extensions 3.0, Install and Core OS, Release 10.20,
April 1999 (B3920-13941)" or the Freely available PTH package, available
either decrease the stacksize or follow some more hints:
Perl's building process is very handy on machines with a lot
-of virtual memory but may result in a desaster if you are short
+of virtual memory but may result in a disaster if you are short
of memory. If gcc fails to compile many source files you should
reduce the optimization. Grep for "optimize" in the file
config.sh and change the flags.
If only several huge files cause problems (actually it is not a
matter of the file size resp. the amount of code but depends on
-the size of the individual funtions) it is useful to bypass
+the size of the individual functions) it is useful to bypass
the make program and compile these files directly from the
command line. For example if you got something like the
following from make:
(here toke.c) at the end.
If none of this helps, you're helpless. Wait for a binary
-release. If you have succeded you may encounter another problem
+release. If you have succeeded you may encounter another problem
at the linking process. If gcc complains that it can't find
some libraries within the perl distribution you probably have
an old linker. If it complains for example about "file not
This is a podified version of the above-mentioned web page,
podified by Jarkko Hietaniemi 2001-Jan-01.
-=head1 What's New in Perl ffor MPE/iX
+=head1 What's New in Perl for MPE/iX
June 1, 2000
The NetWare makefile is located under the NetWare folder.
The makefile for NetWare makes use of miniperl.exe to run some of
the Perl scripts. To create miniperl.exe, run nmake from
-win32 folder through WinNT commond prompt. The build process
+win32 folder through WinNT command prompt. The build process
can be stopped after miniperl.exe is created. Then run nmake
from NetWare folder through WinNT command prompt.
-Currently the follwing two build types are tested on NetWare
+Currently the following two build types are tested on NetWare
=over 4
new Perls will be able to I<resolve the names> of old extension DLLs
if @INC allows finding their directories.
-However, this still does not guarantie that these DLL may be loaded.
+However, this still does not guarantee that these DLL may be loaded.
The reason is the mangling of the name of the I<Perl DLL>. And since
the extension DLLs link with the Perl DLL, extension DLLs for older
versions would load an older Perl DLL, and would most probably
loaded an extension compiled for the old executable (ouph!). In this
case the old executable will get a forwarder DLL instead of the old
perl DLL, so would link with the new perl DLL. While not directly
-fatal, it will behave the same as new excutable. This beats the whole
+fatal, it will behave the same as new executable. This beats the whole
purpose of explicitly starting an old executable.
=item *
Recent perl test suite is quite memory hunrgy. In addition to the comments
above on memory limitations it is also worth checking for _CEE_RUNOPTS
in your environment. Perl now has (in miniperlmain.c) a C #pragma
-to set CEE run options, but the enviroment variable wins.
+to set CEE run options, but the environment variable wins.
-The C code ask for:
+The C code asks for:
#pragma runopts(HEAP(2M,500K,ANYWHERE,KEEP,8K,4K) STACK(,,ANY,) ALL31(ON))
The important parts of that are the second argument (the increment) to HEAP,
and allowing the stack to be "Above the (16M) line". If the heap
-increment is too small then when perl (for example loading unicode/Name.pl) trys
-to create a "big" (400K+) string it cannot fit in a single segement
+increment is too small then when perl (for example loading unicode/Name.pl) tries
+to create a "big" (400K+) string it cannot fit in a single segment
and you get "Out of Memory!" - even if there is still plenty of memory
available.
This is a preliminary alpha version of Plan 9 Perl. Still to be
implemented are MakeMaker and DynaLoader. Many perl commands are
missing or currently behave in an inscrutable manner. These gaps will,
-with perserverance and a modicum of luck, be remedied in the near
+with perseverance and a modicum of luck, be remedied in the near
future.To install this software:
1. Create the source directories and libraries for perl by running the
options that perl throws at it. This might be reasonably placed in
/usr/local/bin.
+=back
+
=head2 Outstanding issues with perl under QNX6
The following tests are still failing for Perl 5.7.1 under QNX 6.1.0:
ext/IO/lib/IO/t/io_sock............FAILED at test 12
ext/IO/lib/IO/t/io_udp.............FAILED at test 4
-=back
-
=head1 AUTHOR
Norton T. Allen (allen@huarp.harvard.edu)
and Configure the build with
sh Configure -Dusemymalloc
-
+
You should not use perl's malloc if you are building with gcc. There
are reports of core dumps, especially in the PDL module. The problem
appears to go away under -DDEBUGGING, so it has been difficult to
Add -lpthread -lc_r to lddlflags
For some reason, the extra includes for pthreads make Digital UNIX
- complain fatally about the sbrk() delcaration in perl's malloc.c
+ complain fatally about the sbrk() declaration in perl's malloc.c
so use the native malloc, e.g. sh Configure -Uusemymalloc, or
manually edit your config.sh as follows:
Change usemymalloc to n
make
When you succeed in compiling and testing ("make test" after your
-build) a threaded Perl in a platform previosuly unknown to support
+build) a threaded Perl in a platform previously unknown to support
threaded perl, please let perlbug@perl.com know about your victory.
Explain what you did in painful detail.
implementation of condition variables in certain porting situations.)
For POSIX threads, perl mutexes and condition variables correspond to
POSIX ones. For FAKE_THREADS, mutexes are stubs and condition variables
-are implmented as lists of waiting threads. For FAKE_THREADS, a thread
+are implemented as lists of waiting threads. For FAKE_THREADS, a thread
waits on a condition variable by removing itself from the runnable
list, calling SCHEDULE to change thr to the next appropriate
runnable thread and returning op (i.e. the new threads next op).
Function called by C<do_readline> to spawn a glob (or do the glob inside
perl on VMS). This code used to be inline, but now perl uses C<File::Glob>
-this glob starter is only used by miniperl during the build proccess.
+this glob starter is only used by miniperl during the build process.
Moving it away shrinks pp_hot.c; shrinking pp_hot.c helps speed perl up.
=cut
=item *
Tie::RefHash::Nestable, by Edward Avis, allows storing hash references
-(unlike the standard Tie::Refhash) The module is contained within
+(unlike the standard Tie::RefHash) The module is contained within
Tie::RefHash.
=item *
The subtests 11 and 12 sometimes fail and sometimes work.
-=head2 HP-UX lib/io_multihomed Fails When LP64-Configur
+=head2 HP-UX lib/io_multihomed Fails When LP64-Configured
The lib/io_multihomed test may hang in HP-UX if Perl has been
configured to be 64-bit. Because other 64-bit platforms do not hang in
[.lib]vmsish............................FAILED on test 13
Failed 4/399 tests, 92.48% okay.
-Compac C V6.4-005 on OpenVMS Alpha 7.2.1
+Compaq C V6.4-005 on OpenVMS Alpha 7.2.1
[-.ext.b]showlex........................FAILED on test 1
[-.ext.list.util.t]tainted..............FAILED on test 3
=item sortsv
-
Sort an array. Here is an example:
sortsv(AvARRAY(av), av_len(av)+1, Perl_sv_cmp_locale);
as it decouples IO from the way the operating system and C library
choose to do things. For USE_PERLIO PerlIO * has an extra layer of
indirection - it is a pointer-to-a-pointer. This allows the PerlIO *
-to remain with a known value while swapping the implementation arround
+to remain with a known value while swapping the implementation around
underneath I<at run time>. In this case all the above are true (but
very simple) functions which call the underlying implementation.
Return C<NULL> and set C<errno> if there is an error. There may be an
implementation limit on the number of open handles, which may be lower
than the limit on the number of open files - C<errno> may not be set
-when C<NULL> is returned if this limnit is exceeded.
+when C<NULL> is returned if this limit is exceeded.
=item B<PerlIO_reopen(path,mode,f)>
FILE * which can be passed to library code which is going to use stdio
calls.
-The fisrt step is to add this line:
+The first step is to add this line:
#define PERLIO_NOT_STDIO 0
=item PerlIO_binmode(f,ptype,imode,layers)
The hook used by perl's C<binmode> operator.
-B<ptype> is perl's charcter for the kind of IO:
+B<ptype> is perl's character for the kind of IO:
=over 8
that were in those elements. (It used to do so in Perl 4, but we
had to break this to make sure destructors were called when expected.)
-You can also gain some miniscule measure of efficiency by pre-extending
+You can also gain some minuscule measure of efficiency by pre-extending
an array that is going to get big. You can also extend an array
by assigning to an element that is off the end of the array. You
can truncate an array down to nothing by assigning the null list
braces as above.
If you're looking for the information on how to use here-documents,
-which used to be here, that's been moved to L<perlop> in the section on
-L<Quote and Quote-like Operators>.
+which used to be here, that's been moved to
+L<perlop/Quote and Quote-like Operators>.
=head2 List value constructors
$all_byte_chrs = '';
for (0..255) { $all_byte_chrs .= chr($_); }
$uuencode_byte_chrs = pack('u', $all_byte_chrs);
- ($uu = <<' ENDOFHEREDOC') =~ s/^\s*//gm;
+ ($uu = <<'ENDOFHEREDOC') =~ s/^\s*//gm;
M``$"`P0%!@<("0H+#`T.#Q`1$A,4%187&!D:&QP='A\@(2(C)"4F)R@I*BLL
M+2XO,#$R,S0U-C<X.3H[/#T^/T!!0D-$149'2$E*2TQ-3D]045)35%565UA9
M6EM<75Y?8&%B8V1E9F=H:6IK;&UN;W!Q<G-T=79W>'EZ>WQ]?G^`@8*#A(6&
optimized for speed on some operations, and for at least some
programmers the notation might be familiar.
+=over 4
+
=item B<How do I convert Hexadecimal into decimal:>
Using perl's built in conversion of 0x notation:
$int = 0xDEADBEEF;
$dec = sprintf("%d", $int);
-
+
Using the hex function:
$int = hex("DEADBEEF");
The remaining transformations (e.g. hex -> oct, bin -> hex, etc.)
are left as an exercise to the inclined reader.
+=back
=head2 Why doesn't & work the way I want it to?
=head2 How can I use a reference as a hash key?
-You can't do this directly, but you could use the standard Tie::Refhash
+You can't do this directly, but you could use the standard Tie::RefHash
module distributed with Perl.
=head1 Data: Misc
If you're looking to use L<dump> to speed up your program, consider
generating bytecode or native C code as described in L<perlcc>. If
you're just trying to accelerate a CGI script, consider using the
-C<mod_perl> extension to B<Apache>, or the CPAN module, Fast::CGI.
+C<mod_perl> extension to B<Apache>, or the CPAN module, CGI::Fast.
You might also consider autoloading or selfloading, which at least
make your program I<appear> to run faster.
module should already be familiar with its format.
C<Perl_op_dump> can be used to dump an C<OP> structure or any of its
-derivatives, and produces output similiar to C<perl -Dx>; in fact,
+derivatives, and produces output similar to C<perl -Dx>; in fact,
C<Perl_dump_eval> will dump the main root of the code being evaluated,
exactly like C<-Dx>.
to explore all boundary conditions that your new function is expected
to handle. If your new function is used only by one module (e.g. toke),
then it should probably be named S_your_function (for static); on the
-other hand, if you expect it to accessable from other functions in
+other hand, if you expect it to accessible from other functions in
Perl, you should name it Perl_your_function. See L<perlguts/Internal Functions>
for more details.
Test on as many platforms as you can find. Test as many perl
Configure options as you can (e.g. MULTIPLICITY). If you have
profiling or memory tools, see L<EXTERNAL TOOLS FOR DEBUGGING PERL>
-below for how to use them to futher test your code. Remember that
+below for how to use them to further test your code. Remember that
most of the people on P5P are doing this on their own time and
don't have the time to debug your code.
=over 4
-=item 1. The functions and attributes of the "layer class".
+=item 1.
+
+The functions and attributes of the "layer class".
+
+=item 2.
-=item 2. The per-instance data for a particular handle.
+The per-instance data for a particular handle.
=back
paragraph or a verbatim paragraph. For example:
=item stuff()
-
+
This function does stuff.
-
+
=cut
-
+
sub stuff {
...
}
-
+
=pod
-
+
Remember to check its return value, as in:
-
- stuff() || die "Couldn't do stufF!";
-
+
+ stuff() || die "Couldn't do stuff!";
+
=cut
=item C<=begin I<formatname>>
called I<formatname>. For example,
=begin html
-
+
<hr> <img src="thang.png">
<p> This is a raw HTML paragraph </p>
-
+
=end html
The command "=for I<formatname> I<text...>"
=item *
If you're more familiar with writing in HTML than with writing in Pod, you
-can try your hand at writing documentation in simple HTML, and coverting
+can try your hand at writing documentation in simple HTML, and converting
it to Pod with the experimental L<Pod::HTML2Pod|Pod::HTML2Pod> module,
(available in CPAN), and looking at the resulting code. The experimental
L<Pod::PXML|Pod::PXML> module in CPAN might also be useful.
# - - - - - - - - - - - -
=item $firecracker->boom()
-
+
This noisily detonates the firecracker object.
=cut
sub boom {
Instead, have it like this:
# - - - - - - - - - - - -
-
+
=item $firecracker->boom()
-
+
This noisily detonates the firecracker object.
-
+
=cut
-
+
sub boom {
...
=for comment
Hm, I wonder what it would look like if
you tried to write a BNF for Pod from this.
-
+
=head3 Dr. Strangelove, or: How I Learned to
Stop Worrying and Love the Bomb
# <- that's the 0th column
=head1 Foo
-
+
Stuff
-
+
$foo->bar
-
+
=cut
Here, "=head1 Foo" and "=cut" are command paragraphs because the first
is a heading. That text may contain formatting codes. Examples:
=head1 Object Attributes
-
+
=head3 What B<Not> to Do!
=item "=pod"
it must be ignored. Examples:
=pod
-
+
This is a plain Pod paragraph.
-
+
=pod This text is ignored.
=item "=cut"
below. Formatting codes are not expanded. Examples:
=over 3
-
+
=over 3.5
-
+
=over
=item "=item"
below. Examples:
=item
-
+
=item *
-
+
=item *
-
+
=item 14
-
+
=item 3.
-
+
=item C<< $thing->stuff(I<dodad>) >>
-
+
=item For transporting us beyond seas to be tried for pretended
offenses
-
+
=item He is at this time transporting large armies of foreign
mercenaries to complete the works of death, desolation and
tyranny, already begun with circumstances of cruelty and perfidy
This is synonymous with:
=begin formatname
-
+
text...
-
+
=end formatname
That is, it creates a region consisting of a single paragraph; that
two paragraphs:
I<I told you not to do this!
-
+
Don't make me say it again!>
...must I<not> be parsed as two paragraphs in italics (with the I
above code must parse as if it were:
I<I told you not to do this!>
-
+
Don't make me say it again!E<gt>
(In SGMLish jargon, all Pod commands are like block-level
Minimal examples:
%% POD::Pod2PS v3.14159, using POD::Parser v1.92
-
+
<!-- Pod::HTML v3.14159, using POD::Parser v1.92 -->
-
+
{\doccomm generated by Pod::Tree::RTF 3.14159 using Pod::Tree 1.08}
-
+
.\" Pod::Man version 3.14159, using POD::Parser version 1.92
Formatters may also insert additional comments, including: the
which all Pod formatters must render faithfully. Characters
in the ranges 0-31 and 127-159 should not be used (neither as
literals, nor as EE<lt>number> codes), except for the
-literal byte-sequences for newline (13, 13 10, or 13), and tab (9).
+literal byte-sequences for newline (13, 13 10, or 10), and tab (9).
Characters in the range 160-255 refer to Latin-1 characters (also
defined there by Unicode, with the same meaning). Characters above
presumably does not I<need> special treatment by a Pod processor;
" 0 1 2 3 " doesn't look like a number in any base, so it would
presumably be looked up in the table of HTML-like names. Since
-there is (and cannot be) an HTML-like entity called " 0 1 2 3 ",
+there isn't (and cannot be) an HTML-like entity called " 0 1 2 3 ",
this will be treated as an error. However, Pod processors may
treat "EE<lt> 0 1 2 3 >" or "EE<lt>e-acute>" as I<syntactically>
invalid, potentially earning a different error message than the
anything, renderable or not). It is good practice to map Latin letters
with diacritics (like "EE<lt>eacute>"/"EE<lt>233>") to the corresponding
unaccented US-ASCII letters (like a simple character 101, "e"), but
-clearly this is often not feasable, and an unrenderable character may
+clearly this is often not feasible, and an unrenderable character may
be represented as "?", or the like. In attempting a sane fallback
(as from EE<lt>233> to "e"), Pod formatters may use the
%Latin1Code_to_fallback table in L<Pod::Escapes|Pod::Escapes>, or
=item *
-Some processors may find it the C<SE<lt>...E<gt>> code easiest to
+Some processors may find that the C<SE<lt>...E<gt>> code is easiest to
implement by replacing each space in the parse tree under the content
of the S, with an NBSP. But note: the replacement should apply I<not> to
spaces in I<all> text, but I<only> to spaces in I<printable> text. (This
Besides the NBSP character discussed above, implementors are reminded
of the existence of the other "special" character in Latin-1, the
-"soft hyphen" chararacter, also known as "discretionary hyphen",
+"soft hyphen" character, also known as "discretionary hyphen",
i.e. C<EE<lt>173E<gt>> = C<EE<lt>0xADE<gt>> =
C<EE<lt>shyE<gt>>). This character expresses an optional hyphenation
point. That is, it normally renders as nothing, but may render as a
<h1><a name="About_the_-M_Operator">About the <code>-M</code>
Operator</h1>
-
+
...
-
+
<a href="somedoc#About_the_-M_Operator">About the <code>-M</code>
Operator" in somedoc</a>
with no accompanying paragraph. The middle item is an example:
=over
-
+
=item 1
-
+
Pick up dry cleaning.
-
+
=item 2
-
+
=item 3
-
+
Stop by the store. Get Abba Zabas, Stoli, and cheap lawn chairs.
-
+
=back
=item *
content. That is, authors should not have an empty region like this:
=over
-
+
=back
Pod processors seeing such a contentless "=over" ... "=back" region,
=item Porro
=item Quisquam Est
-
+
Qui dolorem ipsum quia dolor sit amet, consectetur, adipisci
velit, sed quia non numquam eius modi tempora incidunt ut
labore et dolore magnam aliquam quaerat voluptatem.
"Ut Enim". In that case, you'd want to format it like so:
Neque
-
+
Porro
-
+
Quisquam Est
Qui dolorem ipsum quia dolor sit amet, consectetur, adipisci
velit, sed quia non numquam eius modi tempora incidunt ut
Ut Enim
-That is, there should be (at least roughtly) equal spacing between
+That is, there should be (at least roughly) equal spacing between
items as between paragraphs (although that spacing may well be less
than the full height of a line of text). This leaves it to the reader
to use (con)textual cues to figure out whether the "Qui dolorem
a specific format:
=begin rtf
-
+
\par{\pard\qr\sa4500{\i Printed\~\chdate\~\chtime}\par}
-
+
=end rtf
The exact same effect could, incidentally, be achieved with a single
Another example of a data paragraph:
=begin html
-
+
I like <em>PIE</em>!
-
+
<hr>Especially pecan pie!
-
+
=end html
If these were ordinary paragraphs, the Pod parser would try to
I<identifier> begins with a colon, I<can> contain commands. For example:
=begin :biblio
-
+
Wirth's classic is available in several editions, including:
-
+
=for comment
hm, check abebooks.com for how much used copies cost.
-
+
=over
-
+
=item
-
+
Wirth, Niklaus. 1975. I<Algorithmen und Datenstrukturen.>
Teubner, Stuttgart. [Yes, it's in German.]
-
+
=item
-
+
Wirth, Niklaus. 1976. I<Algorithms + Data Structures =
Programs.> Prentice-Hall, Englewood Cliffs, NJ.
-
+
=back
-
+
=end :biblio
Note, however, a "=begin I<identifier>"..."=end I<identifier>"
nor "=item". For example, this may be considered invalid:
=begin somedata
-
+
This is a data paragraph.
-
+
=head1 Don't do this!
-
+
This is a data paragraph too.
-
+
=end somedata
A Pod processor may signal that the above (specifically the "=head1"
I<not> be treated as an error:
=begin somedata
-
+
This is a data paragraph.
-
+
=cut
-
+
# Yup, this isn't Pod anymore.
sub excl { (rand() > .5) ? "hoo!" : "hah!" }
-
+
=pod
-
+
This is a data paragraph too.
-
+
=end somedata
And this too is valid:
=begin someformat
-
+
This is a data paragraph.
-
+
And this is a data paragraph.
-
+
=begin someotherformat
-
+
This is a data paragraph too.
-
+
And this is a data paragraph too.
-
+
=begin :yetanotherformat
=head2 This is a command paragraph!
This is an ordinary paragraph!
-
+
And this is a verbatim paragraph!
-
+
=end :yetanotherformat
-
+
=end someotherformat
-
+
Another data paragraph!
-
+
=end someformat
The contents of the above "=begin :yetanotherformat" ...
Also consider this valid structure:
=begin :biblio
-
+
Wirth's classic is available in several editions, including:
-
+
=over
-
+
=item
-
+
Wirth, Niklaus. 1975. I<Algorithmen und Datenstrukturen.>
Teubner, Stuttgart. [Yes, it's in German.]
-
+
=item
-
+
Wirth, Niklaus. 1976. I<Algorithms + Data Structures =
Programs.> Prentice-Hall, Englewood Cliffs, NJ.
=back
-
+
Buy buy buy!
-
+
=begin html
-
+
<img src='wirth_spokesmodeling_book.png'>
-
+
<hr>
-
+
=end html
-
+
Now now now!
-
+
=end :biblio
There, the "=begin html"..."=end html" region is nested inside
paragraphs. I.e., these should be tolerated:
=for html
-
+
=begin html
-
+
=end html
-
+
=begin :biblio
-
+
=end :biblio
Incidentally, note that there's no easy way to express a data
paragraph starting with something that looks like a command. Consider:
=begin stuff
-
+
=shazbot
-
+
=end stuff
There, "=shazbot" will be parsed as a Pod command "shazbot", not as a data
is, they must properly nest. For example, this is valid:
=begin outer
-
+
X
-
+
=begin inner
-
+
Y
-
+
=end inner
-
+
Z
-
+
=end outer
while this is invalid:
=begin outer
-
+
X
-
+
=begin inner
-
+
Y
-
+
=end outer
-
+
Z
-
+
=end inner
-
+
This latter is improper because when the "=end outer" command is seen, the
currently open region has the formatname "inner", not "outer". (It just
happens that "outer" is the format name of a higher-up region.) This is
an error. Processors must by default report this as an error, and may halt
-processing the document containing that error. A corrolary of this is that
+processing the document containing that error. A corollary of this is that
regions cannot "overlap" -- i.e., the latter block above does not represent
a region called "outer" which contains X and Y, overlapping a region called
"inner" which contains Y and Z. But because it is invalid (as all
Similarly, this is invalid:
=begin thing
-
+
=end hting
This is an error because the region is opened by "thing", and the "=end"
This is also invalid:
=begin thing
-
+
=end
This is invalid because every "=end" command must have a formatname
"cats" =~ /cats|cat|ca|c/; # matches "cats"
At a given character position, the first alternative that allows the
-regex match to succeed wil be the one that matches. Here, all the
+regex match to succeed will be the one that matches. Here, all the
alternatives match at the first string position, so th first matches.
=head2 Grouping things and hierarchical matching
The last example points out that character classes are like
alternations of characters. At a given character position, the first
-alternative that allows the regexp match to succeed wil be the one
+alternative that allows the regexp match to succeed will be the one
that matches.
=head2 Grouping things and hierarchical matching
Alternations behave the same way in groups as out of them: at a given
string position, the leftmost alternative that allows the regexp to
-match is taken. So in the last example at tth first string position,
+match is taken. So in the last example at the first string position,
C<"20"> matches the second alternative, but there is nothing left over
to match the next two digits C<\d\d>. So perl moves on to the next
alternative, which is the null alternative and that works, since
=head2 POSIX Unicode character classes
-([=a=] for equivalance classes, [.ch.] for collation.)
+(C<[=a=]> for equivalance classes, C<[.ch.]> for collation.)
These are dependent on Unicode normalization and collation.
=head2 Factoring out common suffices/prefices in regexps (trie optimization)
(no metaconfig units yet for these). Don't forget finitel(), fp_classl(),
fp_class_l(), (yes, both do, unfortunately, exist), and unorderedl().)
-As of Perl 5.6.1 is a Perl macro, Perl_isnan().
+As of Perl 5.6.1, there is a Perl macro, Perl_isnan().
=head2 IV/UV preservation
Alan notes that: The basic idea was to extend the parser token stack
(C<YYSTYPE>) to include a type field so we knew what sort of thing each
-element of the stack was. The F<<perly.c> code would then have to be
+element of the stack was. The F<perly.c> code would then have to be
postprocessed to record the type of each entry on the stack as it was
created, and the parser patched so that it could unroll the stack
properly on error.
=head2 Using POSIX calls internally
-When faced with a BSD vs. SySV -style interface to some library or
+When faced with a BSD vs. SysV -style interface to some library or
system function, perl's roots show in that it typically prefers the BSD
interface (but falls back to the SysV one). One example is getpgrp().
Other examples include C<memcpy> vs. C<bcopy>. There are others, mostly in
-F<<pp_sys.c>.
+F<pp_sys.c>.
Mostly, this item is a suggestion for which way to start a journey into
an C<#ifdef> forest. It is not primarily a suggestion to eliminate any of
Currently, indirect object syntax bypasses prototype checks.
-=head2 Install HMTL
+=head2 Install HTML
HTML versions of the documentation need to be installed by default; a
call to C<installhtml> from C<installperl> may be all that's necessary.
=head2 gettimeofday
-C<Time::Hires> has been integrated into the core.
+C<Time::HiRes> has been integrated into the core.
=head2 setitimer and getimiter
-Adding C<Time::Hires> got us this too.
+Adding C<Time::HiRes> got us this too.
=head2 Testing __DIE__ hook
BidiWS Whitespace
BidiON Other Neutrals
+=back
+
=head2 Scripts
The scripts available for C<\p{In...}> and C<\P{In...}>, for example
Yi Radicals
Yi Syllables
+=over 4
+
=item *
The special pattern C<\X> match matches any extended Unicode sequence
=back
-What doesn't yet work are the followng cases:
+What doesn't yet work are the following cases:
=over 8
pattern. (Mnemonic: the (possibly) Nested parenthesis that most
recently closed.)
-This is primarly used inside C<(?{...})> blocks for examining text
+This is primarily used inside C<(?{...})> blocks for examining text
recently matched. For example, to effectively capture text to a variable
(in addition to C<$1>, C<$2>, etc.), replace C<(...)> with
/*
=for apidoc sortsv
-
+
Sort an array. Here is an example:
sortsv(AvARRAY(av), av_len(av)+1, Perl_sv_cmp_locale);
=for apidoc sharedsv_lock
Recursive locks on a sharedsv.
-Locks are dynamicly scoped at the level of the first lock.
+Locks are dynamically scoped at the level of the first lock.
=cut
*/
void