Perl 编程格式指南

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

    return($user, $form, $constants);
当数组不确定的时候也许是一个例外。

    my @return = ($user, $form);
    push @return, $constants if $flag;
    return @return;
尽管如此,但是,为了提高代码的效率和可读性,我们更趋向于编写这样的代码:

    if ($flag) {
        return($user, $form, $constants);
    } else {
        return($user, $form);
    }

垃圾收集

perl在垃圾收集方面的确作的很好。它会自动清理那些过了生存期的词汇范畴变量和已经没有引用计数的对象。如果你使用词汇范畴的话,通常你不必担心这个。 然而,有一些粘合的代码,比如用C编译的代码连接到perl,perl也许就不会自动帮你清理了。在这种情况下,你就得自己动手了。如果在那些粘合的代码中有实现此功能的方法,那么使用这些方法是比较适合的。 还有,如果你有一个运行时间会很长的函数,里面有一个巨大的数据结构。那么希望你尽可能地在它运行完之后立刻释放一下内存。

    my $huge_data_structure = get_huge_data_structure();
    do_something_with($huge_data_structure);
    undef $huge_data_structure;

__END__ 和 __DATA__ 和 __PACKAGE__

在web程序中不要使用__END__或者__DATA__。它们会与mod_perl冲突。还有,在web程序中__PACKAGE__也许不会返回你期望的值。但它们在模块中运行良好。

测试

模块应该提供测试代码,还有如何使用它们的文档。

STDIN/STDOUT

永远使用P5EE的日志工具来报错。不要直接打印到STDERR上。也不要直接打印到STDOUT上。除非你需要直接打印到用户的浏览器上。 在命令行程序中,根据你的需要打印到STDERR或STDOUT上都可以。

文件和Globs

为了建立和分析文件路径,请使用Filel::Spect::Functions 和 File::Basename 模块。要创建和销毁路径,使用File::Path模块。这在非Unix平台中比较方便。

    my $path = "$dir/$file";                # 错
    my $path = catfile($dir, $file);        # 对

    my $dir = ".";                          # 错
    my $dir = curdir();                     # 对

    mkdir("/path"), mkdir("/path/to"), ...  # 错
    `mkdir /path`; `mkdir /path/to`, ...    # 大错特错
    mkpath("/path/to/my/dir", 0, 0775);     # 对
请使用 opendir() readdir() 来代替 glob 操作符(glob('*') 或者 <*>)。注意 glob() 在perl5.6中比以往版本更轻便了,但它还是不十分可靠,每个perl的安装都可以选择通过 File::Glob 模块来用本地的习惯来代替这个默认的。 不要为了任何事而使用向*foo这样的符号表 globs(和上面提到的 glob 不一样),除非有必要必须直接操作符号表。其实这从来都是不必要的。
上一篇:Perl基础指南

文章评论

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