This will attempt to make perl in the current directory.
+=head2 Expected errors
+
+These errors are normal, and can be ignored:
+
+ ...
+ make: [extra.pods] Error 1 (ignored)
+ ...
+ make: [extras.make] Error 1 (ignored)
+
=head2 What if it doesn't work?
If you can't compile successfully, try some of the following ideas.
# _mwoflocheckl issue (see ext/POSIX/hints/svr4.pl) would be appreciated.
#
if test -f /etc/issue -a -f /etc/.relid; then
+ # libcrypt contains nothing libc wouldn't have.
+ libswanted=`echo " $libswanted " | sed -e 's/ crypt / /'`
# With the NCR High Performance C Compiler R3.0c, miniperl fails
# t/op/regexp.t test 461 unless we compile with optimize=-g.
# Volunteers are needed to determine just which files need special
=head2 How can I comment out a large block of perl code?
-You can use embedded POD to discard it. The =for directive
-lasts until the next paragraph (two consecutive newlines).
+You can use embedded POD to discard it. Enclose the blocks you want
+to comment out in POD markers, for example C<=for nobody> and C<=cut>
+(which marks ends of POD blocks).
# program is here
=for nobody
- This paragraph is commented out
-
- # program continues
-
-The =begin and =end directives can contain multiple
-paragraphs.
-
- =begin comment text
all of this stuff
here will be ignored
by everyone
- =end comment text
+ =cut
+
+ # program continues
The pod directives cannot go just anywhere. You must put a
pod directive where the parser is expecting a new statement,
not just in the middle of an expression or some other
-arbitrary s grammar production.
+arbitrary grammar production.
See L<perlpod> for more details.
=back
+=head2 Utilities
+
+To ask for the next layer down use PerlIONext(PerlIO *f).
+
+To check that a PerlIO* is valid use PerlIOValid(PerlIO *f). (All
+this does is really just to check that the pointer is non-NULL and
+that the pointer behind that is non-NULL.)
+
+PerlIOBase(PerlIO *f) returns the "Base" pointer, or in other words,
+the C<PerlIOl*> pointer.
+
+PerlIOSelf(PerlIO* f, type) return the PerlIOBase cast to a type.
+
+Perl_PerlIO_or_Base(PerlIO* f, callback, base, failure, args) either
+calls the I<callback> from the functions of the layer I<f> (just by
+the name of the IO function, like "Read") with the I<args>, or if
+there is no such callback, calls the I<base> version of the callback
+with the same args, or if the f is invalid, set errno to EBADF and
+return I<failure>.
+
+Perl_PerlIO_or_fail(PerlIO* f, callback, failure, args) either calls
+the I<callback> of the functions of the layer I<f> with the I<args>,
+or if there is no such callback, set errno to EINVAL. Or if the f is
+invalid, set errno to EBADF and return I<failure>.
+
+Perl_PerlIO_or_Base_void(PerlIO* f, callback, base, args) either calls
+the I<callback> of the functions of the layer I<f> with the I<args>,
+or if there is no such callback, calls the I<base> version of the
+callback with the same args, or if the f is invalid, set errno to
+EBADF.
+
+Perl_PerlIO_or_fail_void(PerlIO* f, callback, args) either calls the
+I<callback> of the functions of the layer I<f> with the I<args>, or if
+there is no such callback, set errno to EINVAL. Or if the f is
+invalid, set errno to EBADF.
+
=head2 Implementing PerlIO Layers
If you find the implementation document unclear or not sufficient,
-look at the existing perlio layer implementations, which include:
+look at the existing PerlIO layer implementations, which include:
=over
# This is the first line of program text.
sub foo { # This is the second.
-It is an error to try to I<start> a Pod black with a "=cut" command. In
+It is an error to try to I<start> a Pod block with a "=cut" command. In
that case, the Pod processor must halt parsing of the input file, and
must by default emit a warning.
Special package variables when using sort(), see L<perlfunc/sort>.
Because of this specialness $a and $b don't need to be declared
-(using local(), use vars, or our()) even when using the strict
-vars pragma. Don't lexicalize them with C<my $a> or C<my $b>
-if you want to be able to use them in the sort() comparison block
-or function.
+(using use vars, or our()) even when using the C<strict 'vars'> pragma.
+Don't lexicalize them with C<my $a> or C<my $b> if you want to be
+able to use them in the sort() comparison block or function.
=back
$Is_Solaris = $^O eq 'solaris';
$Is_VMS = $^O eq 'VMS';
$Is_DGUX = $^O eq 'dgux';
+$Is_MPRAS = $^O =~ /svr4/ && -f '/etc/.relid';
$Is_Dosish = $Is_Dos || $Is_OS2 || $Is_MSWin32 || $Is_NetWare || $Is_Cygwin;
if $Is_MSWin32 || $Is_NetWare || $Is_Dos;
skip "/dev isn't available to test against", 6
unless -d '/dev' && -r '/dev' && -x '/dev';
+ skip "Skipping; unexpected ls output in MP-RAS", 6
+ if $Is_MPRAS;
my $LS = $Config{d_readlink} ? "ls -lL" : "ls -l";
my $CMD = "$LS /dev 2>/dev/null";
/* Assume it was a minus followed by a one-letter named
* subroutine call (or a -bareword), then. */
DEBUG_T( { PerlIO_printf(Perl_debug_log,
- "### %c looked like a file test but was not\n",
- (int)ftst);
+ "### '-%c' looked like a file test but was not\n",
+ tmp);
} );
s -= 2;
}