=item %s: Command not found
(A) You've accidentally run your script through B<csh> instead
-of Perl. Check the E<lt>#!E<gt> line, or manually feed your script
-into Perl yourself.
+of Perl. Check the #! line, or manually feed your script into
+Perl yourself.
=item %s: Expression syntax
(A) You've accidentally run your script through B<csh> instead
-of Perl. Check the E<lt>#!E<gt> line, or manually feed your script
-into Perl yourself.
+of Perl. Check the #! line, or manually feed your script into
+Perl yourself.
=item %s: Undefined variable
(A) You've accidentally run your script through B<csh> instead
-of Perl. Check the E<lt>#!E<gt> line, or manually feed your script
-into Perl yourself.
+of Perl. Check the #! line, or manually feed your script into
+Perl yourself.
=item %s: not found
(A) You've accidentally run your script through the Bourne shell
-instead of Perl. Check the E<lt>#!E<gt> line, or manually feed your script
+instead of Perl. Check the #! line, or manually feed your script
into Perl yourself.
=item B<-P> not allowed for setuid/setgid script
=item Args must match #! line
(F) The setuid emulator requires that the arguments Perl was invoked
-with match the arguments specified on the #! line.
+with match the arguments specified on the #! line. Since some systems
+impose a one-argument limit on the #! line, try combining switches;
+for example, turn C<-w -U> into C<-wU>.
=item Argument "%s" isn't numeric%s
=item Badly placed ()'s
(A) You've accidentally run your script through B<csh> instead
-of Perl. Check the E<lt>#!E<gt> line, or manually feed your script
-into Perl yourself.
+of Perl. Check the #! line, or manually feed your script into
+Perl yourself.
=item BEGIN failed--compilation aborted
=item syntax error at line %d: `%s' unexpected
(A) You've accidentally run your script through the Bourne shell
-instead of Perl. Check the E<lt>#!E<gt> line, or manually feed your script
+instead of Perl. Check the #! line, or manually feed your script
into Perl yourself.
=item System V IPC is not implemented on this machine
too late to properly taint everything from the environment. So Perl
gives up.
-This error can usually be fixed by editing the "#!" line so that the
+This error can usually be fixed by editing the #! line so that the
B<-T> option is in the Perl program's first argument. (Many operating
-systems that implement the "#!" feature only pick up one argument from
+systems that implement the #! feature only pick up one argument from
it, so Perl has to get the rest on its own.)
=item Too many ('s
=item Too many )'s
(A) You've accidentally run your script through B<csh> instead
-of Perl. Check the E<lt>#!E<gt> line, or manually feed your script
-into Perl yourself.
+of Perl. Check the #! line, or manually feed your script into
+Perl yourself.
=item Too many args to syscall
=item Variable syntax
(A) You've accidentally run your script through B<csh> instead
-of Perl. Check the E<lt>#!E<gt> line, or manually feed your script
-into Perl yourself.
+of Perl. Check the #! line, or manually feed your script into
+Perl yourself.
=item Warning: something's wrong
containing C<\w>, put C<no locale> ahead of the expression in the same
block. See L<perllocale/SECURITY> for further discussion and examples.
+=head2 Switches On the "#!" Line
+
+When you make a script executable, in order to make it usable as a
+command, the system will pass switches to perl from the script's #!
+line. Perl checks that any command-line switches given to a setuid
+(or setgid) script actually match the ones set on the #! line. Some
+UNIX and UNIX-like environments impose a one-switch limit on the #!
+line, so you may need to use something like C<-wU> instead of C<-w -U>
+under such systems. (This issue should arise only in UNIX or
+UNIX-like environments that support #! and setuid or setgid scripts.)
+
=head2 Cleaning Up Your Path
For "Insecure C<$ENV{PATH}>" messages, you need to set C<$ENV{'PATH'}> to a