From: Jarkko Hietaniemi Date: Sat, 5 May 2001 18:16:00 +0000 (+0000) Subject: Updates on the pods related to the modules included since 5.6. X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=83df6a1d65c0fba9c27c7fb715fa674b03462cf0;p=p5sagit%2Fp5-mst-13.2.git Updates on the pods related to the modules included since 5.6. TODO: perltodo really could use major updating. p4raw-id: //depot/perl@9998 --- diff --git a/pod/perlfaq3.pod b/pod/perlfaq3.pod index 49cae1a..b5828b9 100644 --- a/pod/perlfaq3.pod +++ b/pod/perlfaq3.pod @@ -557,14 +557,15 @@ determine the insecure things and exploit them without viewing the source. Security through obscurity, the name for hiding your bugs instead of fixing them, is little security indeed. -You can try using encryption via source filters (Filter::* from CPAN), -but any decent programmer will be able to decrypt it. You can try using -the byte code compiler and interpreter described below, but the curious -might still be able to de-compile it. You can try using the native-code -compiler described below, but crackers might be able to disassemble it. -These pose varying degrees of difficulty to people wanting to get at -your code, but none can definitively conceal it (true of every -language, not just Perl). +You can try using encryption via source filters (Starting from Perl +5.8 the Filter::Simple and Filter::Util::Call modules are included in +the standard distribution), but any decent programmer will be able to +decrypt it. You can try using the byte code compiler and interpreter +described below, but the curious might still be able to de-compile it. +You can try using the native-code compiler described below, but +crackers might be able to disassemble it. These pose varying degrees +of difficulty to people wanting to get at your code, but none can +definitively conceal it (true of every language, not just Perl). If you're concerned about people profiting from your code, then the bottom line is that nothing but a restrictive license will give you diff --git a/pod/perlfaq4.pod b/pod/perlfaq4.pod index 1342634..069340d 100644 --- a/pod/perlfaq4.pod +++ b/pod/perlfaq4.pod @@ -464,7 +464,8 @@ parser. If you are serious about writing a parser, there are a number of modules or oddities that will make your life a lot easier. There are the CPAN modules Parse::RecDescent, Parse::Yapp, and Text::Balanced; -and the byacc program. +and the byacc program. Starting from perl 5.8 the Text::Balanced +is part of the standard distribution. One simple destructive, inside-out approach that you might try is to pull out the smallest nesting parts one at a time: @@ -1780,7 +1781,8 @@ respectively. For some specific applications, you can use one of the DBM modules. See L. More generically, you should consult the FreezeThaw, -Storable, or Class::Eroot modules from CPAN. Here's one example using +Storable, or Class::Eroot modules from CPAN. Starting from Perl 5.8 +Storable is part of the standard distribution. Here's one example using Storable's C and C functions: use Storable; diff --git a/pod/perlfaq7.pod b/pod/perlfaq7.pod index 0299c2d..53d4b6b 100644 --- a/pod/perlfaq7.pod +++ b/pod/perlfaq7.pod @@ -657,11 +657,21 @@ where they don't belong. This is explained in more depth in the L. Briefly, there's no official case statement, because of the variety of tests possible in Perl (numeric comparison, string comparison, glob comparison, -regex matching, overloaded comparisons, ...). Larry couldn't decide -how best to do this, so he left it out, even though it's been on the -wish list since perl1. +regex matching, overloaded comparisons, ...). +Larry couldn't decide how best to do this, so he left it out, even +though it's been on the wish list since perl1. -The general answer is to write a construct like this: +Starting from Perl 5.8 to get switch and case one can use the +Switch extension and say: + + use Switch; + +after which one has switch and case. It is not as fast as it could be +because it's not really part of the language (it's done using source +filters) but it is available, and it's very flexible. + +But if one wants to use pure Perl, the general answer is to write a +construct like this: for ($variable_to_test) { if (/pat1/) { } # do something diff --git a/pod/perlfaq8.pod b/pod/perlfaq8.pod index 1df3b6a..fa4ac44 100644 --- a/pod/perlfaq8.pod +++ b/pod/perlfaq8.pod @@ -447,12 +447,14 @@ probably get away with setting an environment variable: If you want finer granularity than the 1 second that the sleep() function provides, the easiest way is to use the select() function as documented in L. Try the Time::HiRes and -the BSD::Itimer modules (available from CPAN). +the BSD::Itimer modules (available from CPAN, and starting from +Perl 5.8 Time::HiRes is part of the standard distribution). =head2 How can I measure time under a second? In general, you may not be able to. The Time::HiRes module (available -from CPAN) provides this functionality for some systems. +from CPAN, and starting from Perl 5.8 part of the standard distribution) +provides this functionality for some systems. If your system supports both the syscall() function in Perl as well as a system call like gettimeofday(2), then you may be able to do diff --git a/pod/perlfilter.pod b/pod/perlfilter.pod index 4327809..4221371 100644 --- a/pod/perlfilter.pod +++ b/pod/perlfilter.pod @@ -557,6 +557,11 @@ The Source Filters distribution is available on CPAN, in CPAN/modules/by-module/Filter +Starting from Perl 5.8 Filter::Util::Call (the core part of the +Source Filters distribution) is part of the standard Perl distribution. +Also included is a friendlier interface called Filter::Simple, by +Damian Conway. + =head1 AUTHOR Paul Marquess EPaul.Marquess@btinternet.comE diff --git a/pod/perlfunc.pod b/pod/perlfunc.pod index 29e496f..4f3c4d7 100644 --- a/pod/perlfunc.pod +++ b/pod/perlfunc.pod @@ -398,8 +398,9 @@ on the previous timer. For delays of finer granularity than one second, you may use Perl's four-argument version of select() leaving the first three arguments undefined, or you might be able to use the C interface to -access setitimer(2) if your system supports it. The Time::HiRes module -from CPAN may also prove useful. +access setitimer(2) if your system supports it. The Time::HiRes +module (from CPAN, and starting from Perl 5.8 part of the standard +distribution) may also prove useful. It is usually a mistake to intermix C and C calls. (C may be internally implemented in your system with C) @@ -4159,8 +4160,9 @@ busy multitasking system. For delays of finer granularity than one second, you may use Perl's C interface to access setitimer(2) if your system supports -it, or else see L above. The Time::HiRes module from CPAN -may also help. +it, or else see L above. The Time::HiRes module (from CPAN, +and starting from Perl 5.8 part of the standard distribution) may also +help. See also the POSIX module's C function. diff --git a/pod/perlop.pod b/pod/perlop.pod index 3def0ea..5cfdb4a 100644 --- a/pod/perlop.pod +++ b/pod/perlop.pod @@ -667,8 +667,9 @@ Note, however, that this does not always work for quoting Perl code: $s = q{ if($a eq "}") ... }; # WRONG -is a syntax error. The C module on CPAN is able to do this -properly. +is a syntax error. The C module (from CPAN, and +starting from Perl 5.8 part of the standard distribution) is able +to do this properly. There can be whitespace between the operator and the quoting characters, except when C<#> is being used as the quoting character. diff --git a/pod/perlport.pod b/pod/perlport.pod index fc96531..3133a87 100644 --- a/pod/perlport.pod +++ b/pod/perlport.pod @@ -229,8 +229,8 @@ transferring or storing raw binary numbers. One can circumnavigate both these problems in two ways. Either transfer and store numbers always in text format, instead of raw binary, or else consider using modules like Data::Dumper (included in -the standard distribution as of Perl 5.005) and Storable. Keeping -all data as text significantly simplifies matters. +the standard distribution as of Perl 5.005) and Storable (included as +of perl 5.8). Keeping all data as text significantly simplifies matters. =head2 Files and Filesystems diff --git a/pod/perlsec.pod b/pod/perlsec.pod index 3870c2e..18c25ee 100644 --- a/pod/perlsec.pod +++ b/pod/perlsec.pod @@ -343,10 +343,11 @@ determine the insecure things and exploit them without viewing the source. Security through obscurity, the name for hiding your bugs instead of fixing them, is little security indeed. -You can try using encryption via source filters (Filter::* from CPAN). -But crackers might be able to decrypt it. You can try using the -byte code compiler and interpreter described below, but crackers might -be able to de-compile it. You can try using the native-code compiler +You can try using encryption via source filters (Filter::* from CPAN, +or Filter::Util::Call and Filter::Simple since Perl 5.8). +But crackers might be able to decrypt it. You can try using the byte +code compiler and interpreter described below, but crackers might be +able to de-compile it. You can try using the native-code compiler described below, but crackers might be able to disassemble it. These pose varying degrees of difficulty to people wanting to get at your code, but none can definitively conceal it (this is true of every diff --git a/pod/perlsyn.pod b/pod/perlsyn.pod index aad4efd..9d0c920 100644 --- a/pod/perlsyn.pod +++ b/pod/perlsyn.pod @@ -393,8 +393,18 @@ structures. } There is no official C statement in Perl, because there are -already several ways to write the equivalent. In addition to the -above, you could write +already several ways to write the equivalent. + +However, starting from Perl 5.8 to get switch and case one can use +the Switch extension and say: + + use Switch; + +after which one has switch and case. It is not as fast as it could be +because it's not really part of the language (it's done using source +filters) but it is available, and it's very flexible. + +In addition to the above BLOCK construct, you could write SWITCH: { $abc = 1, last SWITCH if /^abc/; diff --git a/pod/perltodo.pod b/pod/perltodo.pod index f38ba88..1d98fa8 100644 --- a/pod/perltodo.pod +++ b/pod/perltodo.pod @@ -111,12 +111,6 @@ problem for free. =head1 Perl Language -=head2 64-bit Perl - -Verify complete 64 bit support so that the value of sysseek, or C<-s>, or -stat(), or tell can fit into a perl number without losing precision. -Work with the perl-64bit mailing list on perl.org. - =head2 Prototypes =over 4 @@ -167,9 +161,9 @@ write a cogent summary, I'll post it.] =head2 Reliable signals -Sarathy and Dan Sugalski are working on this. Chip posted a patch -earlier, but it was not accepted into 5.005. The issue is tricky, -because it has the potential to greatly slow down the core. +Mostly done in Perl 5.8, there is now a reliable signal handler +despatch. No measurable slowdown detected in Linux or Solaris +with the 5.8 approach (implemented by Nick I-S). There are at least three things to consider: @@ -177,7 +171,7 @@ There are at least three things to consider: =item Alternate runops() for signal despatch -Sarathy and Dan are discussed this on perl5-porters. +Sarathy and Dan discussed this on perl5-porters. =item Figure out how to die() in delayed sighandler @@ -206,14 +200,18 @@ it needs more thorough documentation. =head2 Memory leaks from failed eval/regcomp The only known memory leaks in Perl are in failed code or regexp -compilation. Fix this. Hugo Van Der Sanden will attempt this but -won't have tuits until January 1999. +compilation. Fix this. + +Noticed in Perl 5.6: Also local()ising tied variables leak. =head2 Make XS easier to use There was interest in SWIG from porters, but nothing has happened lately. +New development in 2001: the Inline module, when it gels, shows great +promise. + =head2 Make embedded Perl easier to use This is probably difficult for the same reasons that "XS For Dummies" @@ -268,10 +266,6 @@ candidates: =over 4 -=item Regular expressions - -Robin Berjon (r.berjon@ltconsulting.net) has volunteered. - =item I/O Mark-Jason Dominus (mjd@plover.com) has an outline for perliotut. @@ -365,13 +359,6 @@ little 3p pages. Make C tell users what they need to add to their .login or .cshrc to set their MANPATH correctly. -=head2 Install ALL Documentation - -Make the standard documentation kit include the VMS, OS/2, Win32, -Threads, etc information. installperl and pod/Makefile should know -enough to copy README.foo to perlfoo.pod before building everything, -when appropriate. - =head2 Outstanding issues to be documented Tom has a list of 5.005_5* features or changes that require @@ -421,8 +408,7 @@ in with the SDK discussed on the perl-sdk list at perl.org. =head2 Profiler -Make the profiler (Devel::DProf) part of the standard release, and -document it well. +Devel::DProf requires more documentation. =head2 Tie Modules @@ -458,11 +444,6 @@ thousands of lines of code. Write a module for transparent, portable remote procedure calls. (Not core). This touches on the CORBA and ILU work. -=head2 y2k localtime/gmtime - -Write a module, Y2k::Catch, which overloads localtime and gmtime's -returned year value and catches "bad" attempts to use it. - =head2 Export File::Find variables Make File::Find export C<$name> etc manually, at least if asked to. @@ -475,14 +456,6 @@ Finish a proper Ioctl module. Permit a user to debug an already-running program. -=head2 Regular Expression debugger - -Create a visual profiler/debugger tool that stepped you through the -execution of a regular expression point by point. Ilya has a module -to color-code and display regular expression parses and executions. -There's something at http://tkworld.org/ that might be a good start, -it's a Tk/Tcl RE wizard, that builds regexen of many flavours. - =head2 Alternative RE Syntax Make an alternative regular expression syntax that is accessed through @@ -642,11 +615,6 @@ Not a win, according to Guido. =head2 Optimize away @_ where possible -=head2 Optimize sort by { $a <=> $b } - -Greg Bacon added several more sort optimizations. These have -made it into 5.005_55, thanks to Hans Mulder. - =head2 Rewrite regexp parser for better integrated optimization The regexp parser was rewritten for 5.005. Ilya's the regexp guru. @@ -663,12 +631,6 @@ This seems impossible to do without substantially breaking code. =item Loop control on do{} et al -=item Explicit switch statements - -Nobody has yet managed to come up with a switch syntax that would -allow for mixed hash, constant, regexp checks. Submit implementation -with syntax, please. - =item compile to real threaded code =item structured types @@ -814,20 +776,11 @@ from where newASSIGNOP steals the field). Can we install modules as bytecode? -=head1 Recently Finished Tasks - -=head2 Figure a way out of $^(capital letter) - -Figure out a clean way to extend $^(capital letter) beyond -the 26 alphabets. (${^WORD} maybe?) - -Mark-Jason Dominus sent a patch which went into 5.005_56. - =head2 Filenames -Keep filenames in the distribution and in the standard module set -be 8.3 friendly where feasible. Good luck changing the standard -modules, though. +Ongoing effort: keep filenames in the distribution and in the standard +module set be 8.3 friendly where feasible. Good luck changing the +standard modules, though. =head2 Foreign lines @@ -845,10 +798,6 @@ Mostly B in 5.005. Rename and alter ISA.pm. B. It is now base.pm. -=head2 gettimeofday - -See Time::HiRes. - =head2 autocroak? This is the Fatal.pm module, so any builtin that does