我应该在我的Perl程序的入门模板中添加什么?

kno*_*orv 10 perl

我基于以下模板/骨架上的Perl脚本占主导地位:

#!/usr/bin/perl -w

use strict;
use utf8;

$| = 1;
binmode(STDOUT, ":utf8");

# my code goes here.
Run Code Online (Sandbox Code Playgroud)

这个模板实现的目标:

  1. 启用警告(-w)
  2. 启用严格模式(use strict)
  3. 走纯UTF-8(use utf8+ binmode(STDOUT, ":utf8"))
  4. 禁用缓冲($| = 1)

我的问题是:

如何改进我的模板以更好地反映Perl最佳实践?

Mic*_*man 18

更换-wuse warnings.它允许您在需要时以词汇方式禁用警告.见perllexwarn.

use utf8编译指示适用于源代码为UTF-8的情况.如果是的话,很棒.如果不是......我不建议添加您实际不使用的东西.同样,除非您实际生成STDOUT,否则不要将STDOUT设置为UTF-8.

禁用缓冲会降低性能.除非您需要,否则不要这样做,然后将范围限制在必要的范围内.

我想包含一个语句来明确说明运行脚本所需的最低Perl版本.如果由于某人使用旧版本的Perl而无法编译错误消息,则会使错误消息更有意义.例如

BEGIN { require 5.00801 }
Run Code Online (Sandbox Code Playgroud)

我使用那个特定的咒语而不是use v5.8.1因为它与Perl的版本向后兼容我试图用一个有意义的错误消息"支持".

  • "使用"没有任何问题.它并不古老,它会以与你的相同的方式死亡,虽然它没有"BEGIN失败 - 编译中止......"的信息. (2认同)
  • 如果他们使用的是低于5.004的任何东西,他们就不值得支持.认真. (2认同)

bri*_*foy 11

这是我的,虽然我必须承认有时我只是在不使用模板的情况下开始打字.我将其设置为modulino,以便以后添加测试很容易:

#!perl
package App::XXX;

use utf8;
use 5.010;

use strict;
use warnings;
use vars qw($VERSION);

$VERSION = '0.01_01';

__PACKAGE__->run( @ARGV ) unless caller;

sub run
    {
    my( $class, @args ) = @_;


    }

1;
Run Code Online (Sandbox Code Playgroud)

如果要将所有文件句柄自动设置为某些编码,可以添加open编译指示:

 use open IO => ':utf8';
Run Code Online (Sandbox Code Playgroud)

我有另一个文档模板,我稍后添加.

此外,有些人有编辑序列,他们在脚本的顶部或底部添加注释.也许:

# -*- Mode: cperl; coding: utf-8; cperl-indent-level: 4 -*-
# vim: ts=4 sts=4 sw=4:
Run Code Online (Sandbox Code Playgroud)

由于我将脚本放入发行版中,因此安装过程会自动修复shebang行,因此无论我放在哪里都没关系.


inn*_*naM 8

扔一些文件怎么样?

=head1 NAME

name here

=head2 SYNOPSIS

short synopsis here
Run Code Online (Sandbox Code Playgroud)