您正在从Perl 5.6.2查看此文档的版本。查看最新版本

目录

名称

perltodo-Perl TO-DO列表

说明

这是Perl的愿望列表。它由Nathan Torkington为Perl搬运工维护。将更新发送到perl5-porters@perl.org。如果你想从事这些项目中的任何一个,一定要查看perl5-porters档案中过去的想法、火焰和宣传。这会节省你的时间,也会阻止你执行拉里已经否决的事情。可在以下位置找到一组档案:

http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/

基础设施

邮件列表存档

Chaim建议联系egroup并要求他们存档其他perl.org邮件列表。可能不是倡导,但肯定是perl6-porters等。

缺陷跟踪系统

理查德·福利richard@perl.org正在写一个。我们研究了几个,比如gnat和Debian系统,但在我们调查它们时,没有一个能满足我们的需求。从那时起,Jitterbug已经成熟,可能值得重新研究。

我们开发的系统是perlbug邮件的接收者,以及它从perl5-porters生成的任何后续邮件。新的bug被输入到mysql数据库中,并发送给perl5-porters,主题行被重写为包含一个“票号”(新bug的唯一ID)。如果传入消息的主题行中已经有票证号,则会针对该错误记录该消息。有一个单独的电子邮件界面(不转发到p5p),允许搬运工认领、分类和结账。

系统也有一个web界面,位于http://bugs.perl.org。

当前的实现延迟是由perl.org锁定造成的。一个疑点是邮件处理系统,可能会进入循环。

我们仍然迫切需要一个bug管理员,一个能够查看每一个新的“bug”并杀死那些我们已经知道的bug,以及那些根本不是bug的bug的人,等等。

回归测试

Perl测试套件有两个需求:确保功能正常工作,以及确保旧的错误不会再次出现。两者都需要工作。

布伦特·拉维尔(lavelle@metronet.com)已着手进行性能测试并改进测试套件的大小。

新闻报道

Perl附带的测试会测试Perl解释器的每一行(或每一块,或…)吗?如果没有,我们如何使它们这样做?

回归

如果没有相应的测试套件添加,则不应修复任何错误。这需要一个专门的执行者,因为当前的抽水要么太懒,要么太蠢,要么两者兼而有之,让执行遍及整个地图。:-)

__模具__

失败的测试需要有一种形式,可以随时发送给perlbug并用最少的来回测试进行诊断,以确定哪个测试由于什么原因而失败,等等。

绥德珀尔

我们需要对suidperl进行回归/健全测试

从perl4到perl5的速度下降了25%

这个值可能准确,也可能不准确,但它确实引人注目。在某些方面,perl5比perl4更快,但可靠性和可扩展性往往以速度为代价。Gisle早些时候发布的基准套件被誉为一个出色的解决方案,也是一个完全没有意义的数字的来源。我们需要测试“实际应用程序”吗?你能这样做吗?有人有机器来完成这项任务吗?找出增长较慢的东西,看看是否有办法让它们更快。

配置

Andy Dougherty为Perl附带的配置维护了一个“todo”项列表。请参阅最新源代码版本中的Porting/pumpkin.pod。

安装HTML

让“makeinstall”为您提供安装HTML的选项。这将是配置的一部分。Andy Wardley(认证的Perl studmuffin)将调查HTML安装的当前问题——是“installhtml”阻止了这一切的发生,还是pod2html是问题所在?如果是后者,Brad Appleton的pod工作可能会免费解决这个问题。

Perl语言

64位Perl

验证完整的64位支持,以便sysseek的值,或-秒、stat()或tell可以在不损失精度的情况下适合perl数字。使用perl.org上的perl-64位邮件列表。

原型

命名原型

添加实际有效的命名原型。

间接对象

修复忘记间接对象的原型错误。

方法调用

方法调用的原型。

上下文

返回上下文原型声明。

范围界定短节

词汇范围的sub,例如my sub

Perl内部

魔法塞提萨

魔法塞提萨应更新%FIELDS[???]

垃圾收集

有人说TPC2有一个标记和清除垃圾收集器,但(对用户来说)其行为的不可预测性让一些人望而却步。我相信Sarathy做了这项工作。以下是他要说的:

是的,我希望有一天也能实现它。TPC2中提出的要点都与调用DESTROY()方法有关,但我认为我们可以通过扩展bless()来存储对象的额外信息,从而为那些需要DESTROI()的对象准确跟踪其生存期是可预测的(这自然是一次速度打击,因此自然是可选的。)

[注意:现在甚至不要问我这件事!当我有时间写一个有说服力的总结时,我会把它贴出来。]

可靠的信号

Sarathy和Dan Sugalski正在研究这个问题。Chip早些时候发布了补丁,但在5.005中未被接受。这个问题很棘手,因为它有可能大大减缓内核的速度。

至少有三件事需要考虑:

用于信号发送的备用runops()

Sarathy和Dan在perl5-porters上讨论了这一点。

找出如何在延迟叹息器中死亡()
为Thread::Signal添加测试
针对CPAN的自动测试

有没有办法用新的Perl自动构建所有/大部分CPAN,并检查其中的模块是否通过了所有测试?

插值正则表达式性能错误

同时(<>){$found=0;foreach$pat(@patterns){$found++if/$pat/o;}如果找到$,则打印;}

5.005中添加的qr//语法解决了这个问题,但它需要更全面的文档。

失败的eval/regcomp内存泄漏

Perl中唯一已知的内存泄漏发生在失败的代码或regexp编译中。解决这个问题。雨果·范·德桑登(Hugo Van Der Sanden)将尝试这样做,但要到1999年1月才开始。

使XS更易于使用

搬运工对SWIG感兴趣,但最近什么都没有发生。

使嵌入式Perl更易于使用

这可能很难,因为“假人XS”也很难。

命名空间清理

CPP-space:限制从标题导出的CPP符号header-space:移至CORE/perl/API-space:开始构成公共API的事物列表env-space:Configure应该使用PERL_CONFIG而不是CONFIG等。

乘数

完成安全递归解释器的工作Perl->新建()Sarathy表示存在参考实现。

MacPerl公司

Chris Nandor和Matthias Neeracher正在努力将MacPerl更好地集成到Perl发行版中。

文档

Perl附带了很多文档。文档的数量使得用户很难知道要阅读哪个手册页的哪个部分来解决他们的问题。Tom Christiansen过去做过很多文档工作。

明确划分为教程和参考

一些手册页(例如perltoot和perlreftut)明确规定要向读者介绍某个主题。其他手册页(例如perlsub)是没有教程的参考,或者是稍微弯曲了教程的参考。如果内容是教程或参考,那么读者知道阅读哪个手册页来了解某个主题,以及阅读哪个手册页面来了解该主题的所有方面。部分解决方案是:

消除运算符和函数之间的人为区别

历史告诉我们,用户(通常是搬运工)并不清楚操作员与功能的区别。目前参考资料中perlfunc和perlop之间的分歧阻碍了用户导航。鉴于perlfunc是两者中较大的一个,请将运算符引用移动到perlfunch中。

更多教程

更多教程性质的文档可能会有所帮助。以下是一些候选人:

正则表达式

罗宾·伯洪(r.berjon@ltconsulting.net)已自愿参加。

输入/输出

马克·杰森·多明斯(mjd@plover.com)有一个关于perliotut的提纲。

打包/拆包

这是非常需要的。关于perl5-porters,已经有了一些讨论。

调试

罗纳德·金鲍尔(rjk@language.dartmouth.edu语言)已自愿参加。

包括搜索工具

perldoc应该能够“grep”已安装POD文件的全文索引。这会让人们说:

perldoc-查找带逗号的打印数字

并取回“commify”上的perlfaq条目。

然而,此解决方案需要文档来包含用户正在搜索的关键字。即使用户知道他们在寻找什么,他们通常也不会拼写。

包括定位工具

perldoc应该能够帮助人们找到特定高级主题的手册页:

perldoc-查找web

会告诉他们手册页、网页和带有网络编程材料的书籍。类似地perldoc-查找数据库,perldoc-查找引用等等。

我们需要在以下区域附近提供服务:

%perl-帮助随机内容找不到perl函数“random stuff”的文档perlfunc.pod中的以下条目与/random/a匹配:=项目兰德EXPR=项目兰特返回一个大于或等于C<0>且小于的随机分数EXPR的值。(EXPR应为正数。)如果EXPR为省略,则使用值C<1>。自动调用C<srand()>,除非已经调用了C<srand()>。另请参见C<srand()>。(注意:如果rand函数始终返回的数字太大大或太小,那么您的Perl版本可能已经编译好了RANDBITS编号错误。)以下pod页面似乎有/stuff/a:perlfunc.pod(7次点击)perlfaq7.pod(6次点击)perlmod.pod(点击4次)perlsyn.pod(3次点击)perlfaq8.pod(2次点击)perlipc.pod(2次点击)每5004个delta.pod(1次命中)perl5005delta.pod(点击1次)perlcall.pod(点击1次)perldelta.pod(点击1次)perlfaq3.pod(点击1次)perlfaq5.pod(点击1次)perlhist.pod(点击1次)perlref.pod(点击1次)perltoc.pod(点击1次)perltrap.pod(1次命中)继续打开perlfunc.pod?[y] n个你想交互式地说perl吗?[y] n个我应该拨打911吗?[y] n个你需要精神科帮助吗?[y] 年嗨,你今天怎么了?隔壁房间里的一个Python程序员快把我逼疯了!嗯,这是可以解决的。只是[其余部分被审查]

默认情况下单独的功能手册页

Perl应该在3pl或3p手册部分中为每个函数/操作符安装“手册页”。默认情况下。Perl源代码发行版中的splitman程序完成了将大perlfunc转换为小3p页面的工作。

用户找不到手册页

制造商佩尔多克告诉用户需要向.login或.cshrc中添加什么才能正确设置MANPATH。

安装所有文档

使标准文档包包括VMS、OS/2、Win32、Threads等信息。在适当的情况下,installperl和pod/Makefile应该知道在构建一切之前将README.foo复制到perlfoo.pod。

待记录的未决问题

Tom列出了需要文档记录的5.005_5*功能或更改。

创建一个文档,连贯地解释上一个camel版本和当前版本之间的差异。珀尔德尔塔本来应该是这样的,但现在已经不是了。perldelta中的内容似乎也从未在真正的手册页中正确放置。这需要努力。

为Perl改编www.linuxhq.com

这将有助于美化文档并让更多人参与到perl开发中。

用perl程序替换man

我们可以在Perl中重新实现man吗?汤姆有个开始。我相信一些Linux系统会发布类似于manalike的软件。或者,在perldoc上构建以删除诸如“很慢”和“没有合适的”等非功能。

Unicode教程

我们可以做更多的工作来帮助人们理解Larry创建的Perl新的Unicode支持。

模块

更新POSIX扩展以符合POSIX 1003.1版本2

POSIX扩展的当前状态是1991年第1版,而第2版是1996年发布的。ISO/IEC 9945:1-1996(E),ANSI/IEEE标准1003.11996版。国际标准书号1-55937-573-6。更新内容很多:线程、IPC和实时扩展。

模块版本

自动检查标准发行版中的版本,以便抽送人员轻松检查CPAN是否有我们应该包含的更新版本?

新模块

应将哪些模块添加到标准分发中?这与perl.org上perl-SDK列表中讨论的SDK有关。

探查器

将分析器(Devel::DProf)作为标准发行版的一部分,并做好文档记录。

领带模块

VecArray(向量阵列)

使用vec()实现数组。内森·托金顿有这样的工作代码。

子阵列

使用substr()实现数组

虚拟阵列

使用文件实现数组

移位拼接

根据拼接方法定义移位等

程序选项

支持Perl免费OOO模块的常见情况的过程接口。Tom反对“使用IO::File”读取数千行代码。

RPC(RPC)

为透明、可移植的远程过程调用编写一个模块。(非核心)。这涉及到CORBA和ILU工作。

y2k本地时间/gmtime

编写一个模块Y2k::Catch,它重载localtime和gmtime返回的年份值,并捕获“坏”的使用尝试。

导出文件::查找变量

生成文件::查找导出$名称等手动操作,至少在要求时如此。

Ioctl公司

完成适当的Ioctl模块。

调试器附加/分离

允许用户调试已经运行的程序。

正则表达式调试器

创建一个可视化的分析器/调试器工具,逐点引导您执行正则表达式。Ilya有一个模块来对代码进行颜色编码,并显示正则表达式的解析和执行。有东西在http://tkworld.org/这可能是一个好的开始,它是一个Tk/Tcl RE向导,可以构建多种风格的regexen。

替代RE语法

创建通过模块访问的备用正则表达式语法。例如,

使用RE;$re=start_of_line()->文字(“1998/10/08”)->可选(whitespace())->文字(“[”)->记住(many(或(“-”,digit()));如果(/$re/){打印“时间是$1\n”;}

正则表达式新手通常只使用完整语言的子集。也许您不必实现完整的功能集。

捆绑模块

尼古拉斯·克拉克(昵称@flirble.org)有一个用于以压缩格式存储模块的补丁。这需要探索和总结。

期望

采用IO::Tty,使其像Don Libes的“expect”一样可移植(我们可以链接expect代码吗?),并完善expect的Perl版本。IO::Tty和expect可以作为核心分发的一部分进行分发,取代Comm.pl和其他黑客。

GUI::本机

欢迎使用简单的本地图形功能界面。哦,Perl的访问Tk已经足够好了,而且相当可移植,但它并没有人们想要的那么快。简单访问鼠标的剪切缓冲区或鼠标按键不需要加载几TB的Tk代码。

更新半破损辅助工具;h2ph、a2p等。

库尔特·斯塔西尼正在努力提高时速2英里。mjd过去已经修复了a2p中的错误。a2p显然不适用于nawk和gawk扩展。Graham Barr有一个Include模块,它在运行时执行h2ph。

豆荚2小时

短期修复:pod2html生成绝对HTML链接。使其生成相对链接。

播客检查器

像Pod的绒布之类的东西会很好。既能抓住常见错误也能抓住严重错误的东西。布拉德·阿普尔顿(Brad Appleton)正在整理一些东西,作为他的PodParser工作的一部分。

汤姆的愿望

韦伯尔

设计一个与Perl当前的命令行环境一样紧密集成且易于使用的webperl环境。

移动代理

为移动代理提供一个安全可靠的执行环境需要做更多的工作;Safe.pm模块只是一个开始,但在这方面还有很多工作要做。领养企鹅?

非POSIX上的POSIX

非POSIX系统的标准编程结构将帮助许多程序员坚持使用原始的遗留系统。例如,微软还没有在其笨重的系统上开发出可用的POSIX接口,这意味着诸如alarm()和fork()之类的标准操作,它们对于复杂的客户机-服务器编程来说都是至关重要的,必须加以改进。

我不确定Tom是想模拟alarm()和fork(),还是仅仅提供像perlport.pod这样的文档来说明哪些特性是可移植的,哪些不是。

便携式装置

找出一个便携式半胶凝装置,即没有完整路径的装置。拉里说他正在考虑这个。伊利亚指出,perllib_mangle()对此很有帮助。

Win32材料

重命名新标头以与其他标头保持一致

整理spawnvp()混乱

制定DLL版本

样式检查

很高兴有

打包“(东西)*”
打包/解包中的相邻位字段
列克斯珀
捆绑式perl预处理器
尽可能在内部使用posix调用
格式底部
-只有在成功更改时才重命名文件
所有ARGV输入应类似于
报告句柄[格式]。
在perlmain中支持重新运行调试器
左值函数

代表PDL项目的Tuomas Lukka非常希望这样,Ilya有一个补丁(可能是针对旧版本的Perl)。Tuomas指出PDL真正想要的是左值方法不仅仅是潜艇。

可能的杂注

“更少”

(使用更少的内存,CPU)

优化

常量函数缓存

foreach(反向…)

缓存评估树

除非使用了词汇外部范围(在编译中标记?)。

rcatmaybe公司

收缩操作码表

通过在peep中选择的多个实现。

缓存哈希值

据圭多说,这不是一场胜利。

尽可能优化@_

按{$a<=>$b}优化排序

Greg Bacon又添加了几个排序优化。多亏了汉斯·穆德(Hans Mulder),这些数据已经变成了5.005_55。

重写regexp解析器以实现更好的集成优化

为5.005重写了regexp解析器。伊利亚是正则表达式大师。

模糊的可能性

列表上下文中的ref函数

这似乎不可能不破坏代码。

在列表上下文中创建tr///返回直方图?
do{}等的循环控制
显式switch语句

迄今为止,还没有人能够想出一种允许混合哈希、常量和regexp检查的开关语法。请提交带有语法的实现。

编译为真正的线程代码
结构化类型
可修改$1等

这样做的目的是为了编辑目标字符串的匹配部分。

做或不做

这些事情在过去曾被讨论过,并因其价值值得怀疑而受到严厉批评。

使my()处理“package”变量

我能说出我的($Foo::Bar),这听起来很可笑,而5.6的泵已经被嘲笑了。

“或”测试定义的不是事实

我们告诉人们||可用于为变量提供默认值:

$children=移位||5;#default为5个子级

这几乎是(但不是):

$children=班次;$儿童=5,除非$儿童;

但如果给出了第一个参数,并且是“0”,那么它将被视为错误||5改为使用。我们真的想要||-like运算符的行为如下:

$children=班次;$children=5,除非定义$childen;

即,a||这是对定义的测试,而不是对真理的测试。讨论了其中一个,并提交了补丁,但反对意见很多。尽管有人反对,但许多人仍然觉得有必要。至少我们决定??是操作员的最佳名称。

“动态”词汇

我的$x;子foo{本地$x;}

正如Tim Bunce指出的那样,本地化与变量是全局变量还是词法变量是分开的概念。Chip Salzenberg曾经有过一个实现,但Larry认为它可能会引起混淆。

基于“类”而不是基于包的“词典”

这与Alias模块提供的类似,但这些变量将是perl在编译时保留的字典,它们实际上是指向伪手对象的索引,在如此声明的每个方法中都是可见的。

螺纹加工

模块

哪些标准模块是螺纹安全的?哪些CPAN模块?修复这些不安全模块有多容易?

测试

线程仍处于实验阶段。每一个可复制的错误都会为我们确定其他需要修复的东西。查找并提交更多这些问题。

$自动加载

出口/模具

线程中退出/终止的一致语义。

外螺纹

更好地支持外部创建的线程。

线程::池

螺纹安全

抽查全局变量,如statcache和全局GV,以确保线程安全。"已完成部分“萨拉西说。

全螺纹GV

根据Sarathy的说法,这将使@_在线程和非线程中相同,并有助于解决文件句柄等问题(同一文件句柄目前不能在两个线程中使用)。

编译器

优化

编译器用于创建字节码或可编译C代码的后端代码生成器可以使用优化工作。

字节perl

找出如何以及在何处为各种平台构建byteperl。

预编译模块

将字节编译的模块保存在磁盘上。

可执行程序

自动生成可执行文件。

键入的词典

键入的词典应影响B::CC::load_pad。

Win32(Win32)

帮助Win32动态加载的解决方案。

END块

既然CHECK块可用,END块需要保存在编译输出中。

_自动加载

_自动加载戳。

审计委员会名单

修复comppadlist(comppad_name中的名称可以在newASSIGNOP窃取字段的位置使用假SvCUR)。

缓存的编译

我们可以将模块安装为字节码吗?

最近完成的任务

计算$^(大写字母)的出路

找出一种简洁的方法,将$^(大写字母)扩展到26个字母之外。(可能是${^WORD}?)

马克·杰森·多明斯(Mark-Jason Dominus)发送了一个补丁,补丁升级到5.005_56。

文件名

在可行的情况下,使分发版和标准模块集中的文件名保持8.3友好。不过,祝你在更换标准模块时好运。

外线

Perl应该更慷慨地接受外线终止。主要是完成5.005中。

命名空间清理

symbol-space:所有全局变量的“pl”前缀所有函数的“Perl_”前缀CPP-space:除非要求,否则停止malloc()/free()污染

国际会计准则.pm

重命名并更改ISA.pm。多恩。现在是base.pm。

获取每天的时间

请参阅时间::HiRes。

汽车橡木?

这是Fatal.pm模块,因此任何不返回success的内置程序都会自动死亡()。如果您觉得勇敢,请将其与统一的异常方案联系起来。