Fayland 林 > Book-Chinese-MasterPerlToday > Book::Chinese::MasterPerlToday::BeACPANAuthor

Download:
Book-Chinese-MasterPerlToday-0.02.tar.gz

Annotate this POD

View/Report Bugs
Source  

NAME ^

Book::Chinese::MasterPerlToday::BeACPANAuthor - Be a CPAN Author

DESCRIPTION ^

本章主要描述如何成为一个 CPAN 贡献者

您有一个非常好的模块,您想与整个 Perl 社区分享。最好的方式是将您的模块上传到 CPAN,本章将描述如何打包,上传您的模块和一些 CPAN 社区约定俗成的惯例。

PAUSE

上传模块到 CPAN 之前,您首先需要到 PAUSE http://pause.perl.org/ 申请一个帐号。通常帐号会在一周之内被批准(因为是志愿者自愿维护和批准整个 PAUSE 网站,所以有点慢)。

上传模块将在您通过帐号批准之后,登录 PAUSE 网站,然后点击左侧的 'Upload a file to CPAN' 来上传您的打包文件。

如何选择一个模块名

为了更好更清晰地组织 CPAN 上的所有包,您需要准确的命名您的模块。

通常请不要给你的模块取最顶层的名字(不带 :: 的包名),和谐的做法是置于某个顶层命名空间下。(当然,如果您觉得您的包将非常有用和流行的话,使用顶层名字也是可以的。)

如果你还是无法找到准确的地方来放您的模块,建议去 comp.lang.perl.modules 新闻组咨询。

如何打包模块

通常我们不会将一个(或多个) pm 文件直接上传到 PAUSE,默认的规则是打包成 .tar.gz 然后再上传。

h2xs

    > h2xs -AX -n Book::Chinese

h2xs 是最古老的创建新模块的工具。请参阅 h2xs 命令帮助。

不建议使用。

Module::Starter

    > cpan Module::Starter

安装 Module::Starter 完毕之后,perl bin 目录将有一个 module-starter 可执行文件。

    > module-starter --module=Book::Chinese::MasterPerlToday --author="Fayland Lam" --email=fayland@gmail.com

默认使用 ExtUtils::MakeMaker 作为 builder,可以后面再带 '--mb' 使用 Module::Build 或者带 '--mi' 来使用 Module::Install 作为 builder 引擎。

ExtUtils::MakeMaker 是最古老和使用最广的 builder 模块。它需要和 make 配合来打包模块。

    > perl Makefile.PL
    > make
    > make manifest
    > make test
    > make dist
    > make realclean

Module::Build 是用来代替 ExtUtils::MakeMaker 的。它不需要 make,可用 Perl 来完成打包工作。

    > perl Build.PL
    > perl Build
    > perl Build manifest
    > perl Build test
    > perl Build dist
    > perl Build realclean

Module::Install 的打包方法和 ExtUtils::MakeMaker 一样(需要 make 配合)。但不同之处在于:

个人建议使用 Module::BuildModule::Install

Dist::Zilla

    > cpan Dist::Zilla

安装 Dist::Zilla 完毕之后,perl bin 目录下将有一个 dzil 的可执行文件。

    > dzil new Book::Chinese::MasterPerlToday

dzil 通过 dist.ini 来控制整个过程。

    > dzil test
    > dzil dist
    > dzil clean

dzil 跟 ExtUtils::MakeMakerModule::BuildModule::InstallModule::Starter 都不同。

包的组成

一个包通常包括

如何编写测试

本段落仅仅描述如何简单地编写测试和验证测试,更多跟详尽的内容,建议参考《Perl Testing 程序高手秘笈》。本书 China-pub,当当和卓越均可购买,由盛春(chunzi)和蒋永清(joe jiang)翻译。

最简单和使用最广泛的测试模块当属 Test::More,建议阅读的有

一个简单的测试文件如下 (eg/BeACPANAuthor/01-basic.t)

    #!/usr/bin/perl
    
    use strict;
    use warnings;
    use Test::More tests => 3;
    
    ok(1, 'true value');
    cmp_ok( 1+1, '==', 2, '1+1=2');
    use_ok('Test::More');
    
    1;

测试所写的 .t 文件跟普通的 Perl 文件一样,你可以使用 perl 01-basic.t 来运行它。比如:

    E:\Fayland\chinese-perl-book\eg\BeACPANAuthor>perl 01-basic.t
    1..3
    ok 1 - true value
    ok 2 - 1+1=2
    ok 3 - use Test::More;

prove 仅仅是在 perl 输出结果的基础上进行总结

    E:\Fayland\chinese-perl-book\eg\BeACPANAuthor>prove 01-basic.t
    01-basic.t .. ok
    All tests successful.
    Files=1, Tests=3,  0 wallclock secs ( 0.08 usr +  0.00 sys =  0.08 CPU)
    Result: PASS

Test::More 遵从 TAP (The Test Anything Protocal) 格式,而 prove 能解析所有遵从 TAP 格式的输出(可以是其他语言写的)。

测试 Tip

FAQ 和建议

CPAN 作者

跟踪 Perl 高手的足迹和阅读他们的代码。

根据首字母排序:

大陆(和香港) Perl CPAN 作者,参考 Acme::CPANAuthors::Chinese

首字母排序:

SEE ALSO ^

Book::Chinese::MasterPerlToday::BeACPANTester

AUTHOR ^

Fayland Lam, <fayland at gmail.com>

COPYRIGHT & LICENSE ^

Copyright (c) 2009 Fayland Lam

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

syntax highlighting: