📄 perltodo.1
字号:
.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05).\".\" Standard preamble:.\" ========================================================================.de Sh \" Subsection heading.br.if t .Sp.ne 5.PP\fB\\$1\fR.PP...de Sp \" Vertical space (when we can't use .PP).if t .sp .5v.if n .sp...de Vb \" Begin verbatim text.ft CW.nf.ne \\$1...de Ve \" End verbatim text.ft R.fi...\" Set up some character translations and predefined strings. \*(-- will.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left.\" double quote, and \*(R" will give a right double quote. \*(C+ will.\" give a nicer C++. Capital omega is used to do unbreakable dashes and.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,.\" nothing in troff, for use with C<>..tr \(*W-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'.ie n \{\. ds -- \(*W-. ds PI pi. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch. ds L" "". ds R" "". ds C` "". ds C' ""'br\}.el\{\. ds -- \|\(em\|. ds PI \(*p. ds L" ``. ds R" '''br\}.\".\" Escape single quotes in literal strings from groff's Unicode transform..ie \n(.g .ds Aq \(aq.el .ds Aq '.\".\" If the F register is turned on, we'll generate index entries on stderr for.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index.\" entries marked with X<> in POD. Of course, you'll have to process the.\" output yourself in some meaningful fashion..ie \nF \{\. de IX. tm Index:\\$1\t\\n%\t"\\$2"... nr % 0. rr F.\}.el \{\. de IX...\}.\".\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2)..\" Fear. Run. Save yourself. No user-serviceable parts.. \" fudge factors for nroff and troff.if n \{\. ds #H 0. ds #V .8m. ds #F .3m. ds #[ \f1. ds #] \fP.\}.if t \{\. ds #H ((1u-(\\\\n(.fu%2u))*.13m). ds #V .6m. ds #F 0. ds #[ \&. ds #] \&.\}. \" simple accents for nroff and troff.if n \{\. ds ' \&. ds ` \&. ds ^ \&. ds , \&. ds ~ ~. ds /.\}.if t \{\. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u". ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'.\}. \" troff and (daisy-wheel) nroff accents.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'.ds 8 \h'\*(#H'\(*b\h'-\*(#H'.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#].ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#].ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#].ds ae a\h'-(\w'a'u*4/10)'e.ds Ae A\h'-(\w'A'u*4/10)'E. \" corrections for vroff.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'. \" for low resolution devices (crt and lpr).if \n(.H>23 .if \n(.V>19 \\{\. ds : e. ds 8 ss. ds o a. ds d- d\h'-1'\(ga. ds D- D\h'-1'\(hy. ds th \o'bp'. ds Th \o'LP'. ds ae ae. ds Ae AE.\}.rm #[ #] #H #V #F C.\" ========================================================================.\".IX Title "PERLTODO 1".TH PERLTODO 1 "2007-12-18" "perl v5.10.0" "Perl Programmers Reference Guide".\" For nroff, turn off justification. Always turn off hyphenation; it makes.\" way too many mistakes in technical documents..if n .ad l.nh.SH "NAME"perltodo \- Perl TO\-DO List.SH "DESCRIPTION".IX Header "DESCRIPTION"This is a list of wishes for Perl. The tasks we think are smaller or easierare listed first. Anyone is welcome to work on any of these, but it's a goodidea to first contact \fIperl5\-porters@perl.org\fR to avoid duplication ofeffort. By all means contact a pumpking privately first if you prefer..PPWhilst patches to make the list shorter are most welcome, ideas to add tothe list are also encouraged. Check the perl5\-porters archives for pastideas, and any discussion about them. One set of archives may be found at:.PP.Vb 1\& http://www.xray.mpe.mpg.de/mailing\-lists/perl5\-porters/.Ve.PPWhat can we offer you in return? Fame, fortune, and everlasting glory? Maybenot, but if your patch is incorporated, then we'll add your name to the\&\fI\s-1AUTHORS\s0\fR file, which ships in the official distribution. How many otherprogramming languages offer you 1 line of immortality?.SH "Tasks that only need Perl knowledge".IX Header "Tasks that only need Perl knowledge".Sh "Remove duplication of test setup.".IX Subsection "Remove duplication of test setup."Schwern notes, that there's duplication of code \- lots and lots of tests havesome variation on the big block of \f(CW$Is_Foo\fR checks. We can safely put thisinto a file, change it to build an \f(CW%Is\fR hash and require it. Maybe just putit into \fItest.pl\fR. Throw in the handy tainting subroutines..Sh "merge common code in installperl and installman".IX Subsection "merge common code in installperl and installman"There are some common subroutines and a common \f(CW\*(C`BEGIN\*(C'\fR block in \fIinstallperl\fRand \fIinstallman\fR. These should probably be merged. It would also be good tocheck for duplication in all the utility scripts supplied in the sourcetarball. It might be good to move them all to a subdirectory, but this wouldrequire careful checking to find all places that call them, and change thosecorrectly..Sh "common test code for timed bail out".IX Subsection "common test code for timed bail out"Write portable self destruct code for tests to stop them burning \s-1CPU\s0 ininfinite loops. This needs to avoid using alarm, as some of the tests aretesting alarm/sleep or timers..Sh "\s-1POD\s0 \-> \s-1HTML\s0 conversion in the core still sucks".IX Subsection "POD -> HTML conversion in the core still sucks"Which is crazy given just how simple \s-1POD\s0 purports to be, and how simple \s-1HTML\s0can be. It's not actually \fIas\fR simple as it sounds, particularly with theflexibility \s-1POD\s0 allows for \f(CW\*(C`=item\*(C'\fR, but it would be good to improve thevisual appeal of the \s-1HTML\s0 generated, and to avoid it having any validationerrors. See also \*(L"make \s-1HTML\s0 install work\*(R", as the layout of installation treeis needed to improve the cross-linking..PPThe addition of \f(CW\*(C`Pod::Simple\*(C'\fR and its related modules may make this taskeasier to complete..Sh "merge checkpods and podchecker".IX Subsection "merge checkpods and podchecker"\&\fIpod/checkpods.PL\fR (and \f(CW\*(C`make check\*(C'\fR in the \fIpod/\fR subdirectory)implements a very basic check for pod files, but the errors it discoversaren't found by podchecker. Add this check to podchecker, get rid ofcheckpods and have \f(CW\*(C`make check\*(C'\fR use podchecker..Sh "perlmodlib.PL rewrite".IX Subsection "perlmodlib.PL rewrite"Currently perlmodlib.PL needs to be run from a source directory where perlhas been built, or some modules won't be found, and others will beskipped. Make it run from a clean perl source tree (so it's reproducible)..Sh "Parallel testing".IX Subsection "Parallel testing"(This probably impacts much more than the core: also the Test::Harnessand TAP::* modules on \s-1CPAN\s0.).PPThe core regression test suite is getting ever more comprehensive, which hasthe side effect that it takes longer to run. This isn't so good. Investigatewhether it would be feasible to give the harness script the \fBoption\fR ofrunning sets of tests in parallel. This would be useful for tests in\&\fIt/op/*.t\fR and \fIt/uni/*.t\fR and maybe some sets of tests in \fIlib/\fR..PPQuestions to answer.IP "1." 4How does screen layout work when you're running more than one test?.IP "2." 4How does the caller of test specify how many tests to run in parallel?.IP "3." 4How do setup/teardown tests identify themselves?.PPPugs already does parallel testing \- can their approach be re-used?.Sh "Make Schwern poorer".IX Subsection "Make Schwern poorer"We should have tests for everything. When all the core's modules are tested,Schwern has promised to donate to \f(CW$500\fR to \s-1TPF\s0. We may need volunteers tohold him upside down and shake vigorously in order to actually extract thecash..Sh "Improve the coverage of the core tests".IX Subsection "Improve the coverage of the core tests"Use Devel::Cover to ascertain the core modules's test coverage, then addtests that are currently missing..Sh "test B".IX Subsection "test B"A full test suite for the B module would be nice..Sh "Deparse inlined constants".IX Subsection "Deparse inlined constants"Code such as this.PP.Vb 2\& use constant PI => 4;\& warn PI.Ve.PPwill currently deparse as.PP.Vb 2\& use constant (\*(AqPI\*(Aq, 4);\& warn 4;.Ve.PPbecause the tokenizer inlines the value of the constant subroutine \f(CW\*(C`PI\*(C'\fR.This allows various compile time optimisations, such as constant foldingand dead code elimination. Where these haven't happened (such as the exampleabove) it ought be possible to make B::Deparse work out the name of theoriginal constant, because just enough information survives in the symboltable to do this. Specifically, the same scalar is used for the constant inthe optree as is used for the constant subroutine, so by iterating over allsymbol tables and generating a mapping of \s-1SV\s0 address to constant name, itwould be possible to provide B::Deparse with this functionality..Sh "A decent benchmark".IX Subsection "A decent benchmark"\&\f(CW\*(C`perlbench\*(C'\fR seems impervious to any recent changes made to the perl core. Itwould be useful to have a reasonable general benchmarking suite that roughlyrepresented what current perl programs do, and measurably reported whethertweaks to the core improve, degrade or don't really affect performance, toguide people attempting to optimise the guts of perl. Gisle would welcomenew tests for perlbench..Sh "fix tainting bugs".IX Subsection "fix tainting bugs"Fix the bugs revealed by running the test suite with the \f(CW\*(C`\-t\*(C'\fR switch (via\&\f(CW\*(C`make test.taintwarn\*(C'\fR)..Sh "Dual life everything".IX Subsection "Dual life everything"As part of the \*(L"dists\*(R" plan, anything that doesn't belong in the smallest perldistribution needs to be dual lifed. Anything else can be too. Figure out whatchanges would be needed to package that module and its tests up for \s-1CPAN\s0, anddo so. Test it with older perl releases, and fix the problems you find..PPTo make a minimal perl distribution, it's useful to look at\&\fIt/lib/commonsense.t\fR..ie n .Sh "Improving ""threads::shared""".el .Sh "Improving \f(CWthreads::shared\fP".IX Subsection "Improving threads::shared"Investigate whether \f(CW\*(C`threads::shared\*(C'\fR could share aggregates properly withonly Perl level changes to shared.pm.Sh "\s-1POSIX\s0 memory footprint".IX Subsection "POSIX memory footprint"Ilya observed that use \s-1POSIX\s0; eats memory like there's no tomorrow, and atvarious times worked to cut it down. There is probably still fat to cut out \-for example \s-1POSIX\s0 passes Exporter some very memory hungry data structures..Sh "embed.pl/makedef.pl".IX Subsection "embed.pl/makedef.pl"There is a script \fIembed.pl\fR that generates several header files to prefixall of Perl's symbols in a consistent way, to provide some semblance ofnamespace support in \f(CW\*(C`C\*(C'\fR. Functions are declared in \fIembed.fnc\fR, variablesin \fIinterpvar.h\fR. Quite a few of the functions and variablesare conditionally declared there, using \f(CW\*(C`#ifdef\*(C'\fR. However, \fIembed.pl\fRdoesn't understand the C macros, so the rules about which symbols are presentwhen is duplicated in \fImakedef.pl\fR. Writing things twice is bad, m'kay.It would be good to teach \f(CW\*(C`embed.pl\*(C'\fR to understand the conditionalcompilation, and hence remove the duplication, and the mistakes it has caused..Sh "use strict; and AutoLoad".IX Subsection "use strict; and AutoLoad"Currently if you write.PP.Vb 8\& package Whack;\& use AutoLoader \*(AqAUTOLOAD\*(Aq;\& use strict;\& 1;\& _\|_END_\|_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -