Perl 编程格式指南

时间:2007-05-25 02:28:26  来源:站长资讯收集整理  作者:佚名

空白

在结束句子的分号之前不要留空白。

    foo(@bar) ;     # 错
    foo(@bar);      # 对
垂直对齐。

    my $foo   = 1;
    my $bar   = 2;
    my $xyzzy = 3;

    open(FILE, $fh)   or die $!;
    open(FILE2, $fh2) or die $!;

    $rot13 =~ tr[abcedfghijklmnopqrstuvwxyz]
                [nopqrstuvwxyzabcdefghijklm];

    # note we use a-mn-z instead of a-z,
    # for readability
    $rot13 =~ tr[a-mn-z]
                [n-za-m];
为了增加可读性,下列操作时需要一些空白: * 在做不同工作的代码块间,添加空行。 * 在变量声明完成之后,添加空行。 * 在最终的return()代码之前,添加空行。 * 在块的前面和后面添加空行,如果前面是注释的话,则不用添加空行。 一个例子:

    # this is my function!  这是我的函数
    sub foo {
        my (@data) = @_;
        my $obj = new Constructor;
        my ($var1, $var2);

        $obj->setFoo($data[1]);
        $var1 = $obj->getFoo(1);
        $var2 = $obj->getFoo($var1);

        display($var1, $var2);

        return($data[0]);
    }

    print 1;

圆括号

在流程结构中,在关键词和圆括号对之间要有空格。但对于函数,则不必。

    for(@list)         # 错
    for (@list)        # 对

    my ($ref)          # 对
    my($ref)          # 首选

    localtime ($time); # 错
    localtime($time);  # 对
对带圆括号的列表和标量上下文要仔细!

    my @array = ('a', 'b', 'c');
    my ($first_element) = @array;           # a
    my ($first_element) = ('a', 'b', 'c');  # a
    my $element_count  = @array;            # 3
    my $last_element   = ('a', 'b', 'c');   # c
永远在函数后面加上圆括号,尽管没有参数也是如此。但有一些例外,比如列表操作符(比如print)和一元操作符(像undef,delete,uc等等)。 如果为了可读性,可以在圆括号中添加空格,否则不要添加。

    for ( map { [ $_, 1 ] } @list )     # 可以
    for ( @list )                       # 也还可以。
在多行的表达式中,用开始的语句或前圆括号来对齐后圆括号都可以。

    @list = qw(
        bar
        baz
    );              # 正确

    if ($foo && $bar && $baz
         && $buz && $xyzzy
    ) {
        print $foo;
    }
在后圆括号之后是否添加空格取决于它后面要跟什么。

    print foo(@bar), baz(@buz) if $xyzzy;
还要注意,在允许省略圆括号的情况下-单行控制流程表达式,比如if $xyzzy,对于程序员来说,如果你十分明确它的含义的话,你可以省略圆括号。其实在上面的这种情况在$xyzzy两边是完全可以省略掉圆括号的。所以就省略掉它们,以增加可读性。如果有问题的话,那最好就别省略圆括号了。 同样原则也适用于perl的内置函数,当你很确定的情况下(例如,在语句中只有一句调用函数的语句,或者函数调用被流控制操作符分割)。用户自定义函数必须加上圆括弧。
上一篇:Perl基础指南

文章评论

共有 位CH网友发表了评论 查看完整内容