标准的perl程序表示

时间:2011-10-10 13:08:51

标签: perl

我想要perl编程的标准方式。我正在编写perl脚本,但我需要在程序启动之前写一些信息。这个sript和组织的目的是什么,时间和日期以及文件位置... e.t.c。例如,在c语言中,我们正在写这样的

  /*!
 *****************************************************************************
 *
 * @file code.c
 * @brief
 * @b Description: temperature measurement
 * @ university of east london, All rights reserved.
 *
 * $Header: //data/name/source/code.c#10 $
 * $DateTime: 2011/01/18 16:06:25 $
 *
 ****************************************************************************/
 /* Include files:                                                           */
 #include "stdio.h"

如上所述,注释用于c语言。我需要在perl脚本之前编写相同的描述。有没有格式。我非常喜欢perl。

4 个答案:

答案 0 :(得分:5)

我使用perl内置文档的东西。荚

http://perldoc.perl.org/perlpod.html

我写的一个简单类是

#!/bin/perl
#---------------------------------------------------------------------------------
=head1 Temperature.pm

This class records temperatures ant converts between celcius and ferenheit

university of east london, All rights reserved.

    $Id$
    $Url$

=head2 Constants

=over

=item Temperature units

These constants are used to indicate the units temperature is recorded in.

=cut
#---------------------------------------------------------------------------------
use constant UNIT_CELSUIS   => 1;
use constant UNIT_FARENHEIT => 2;

#---------------------------------------------------------------------------------
=item Attribute indexes

Our object is an array ref, so these private constants are the indexes
of the attributes of our class

=cut
#---------------------------------------------------------------------------------
my $IDX_DEGREES = 0;
my $IDX_UNITS   = 1;

#---------------------------------------------------------------------------------
=back

=head2 Methods

=over

=item new

This is the constructor creates the object. Default is 0 degrees celsius

=cut
#---------------------------------------------------------------------------------
sub new
{
    my( $class, $degrees, $units ) = @_;
    my $self = bless( [], ref($class) || $class );
    $self->[$IDX_DEGREES] = $degrees || 0;
    $self->[$IDX_UNITS]   = $units   || UNIT_CELSIUS;
    return $self;
} # END new

#---------------------------------------------------------------------------------
=item asCelsius

Returns the temperature in degrees celsius

=cut
#---------------------------------------------------------------------------------
sub asCelsius
{
    my( $self ) = @_;
    if( $self->[$IDX_UNITS] == UNIT_CELSIUS )
    {
        return $self->[$IDX_DEGREES];
    }
    else
    {
        return ( $self->[$IDX_DEGREES]  − 32 ) * (5⁄9);
    }
} # END as Celsius

#---------------------------------------------------------------------------------
=back

End of module

=cut
#---------------------------------------------------------------------------------
1;

答案 1 :(得分:4)

在Perl中实际上有一个标准用于在脚本中嵌入文档,但这不是你的想法。看看Perl's POD format。这是文档嵌入Perl程序的标准方式。您可以使用perldoc程序查看此文档:

$ perldoc myscript.pl

并且,您可以使用各种pod2xxx命令格式化此信息:

$ pod2html myscript.pl > myscript.html  #HTML format
$ pod2text myscript.pl > myscript.txt   #Text format
$ pod2wiki myscript.pl > wikitext.txt   #For embedding into various Wikis (not part of std Perl dist)

POD格式非常简单易学。最难理解的是每个命令和部分之间必须有一个空行。

这是错误的:

 =pod
 =head1 PROGRAM NAME
 myscript.pl
 =head1 DESCRIPTION
 My Program is nice.
 =head1 SYNOPSIS
 My program does things

相反:

 =pod

 =head1 PROGRAM NAME

 myscript.pl

 =head1 DESCRIPTION

 My Program is nice.

 =head1 SYNOPSIS

 My program does things

另请参阅Pod StylePod Spec

您在CPAN page中看到的所有信息都是由模块中嵌入的POD生成的。与ActiveState的ActivePerl文档相同。

POD格式通常采用与MANPAGES相同的格式。因此,您可以将以下部分设为=head1

  • NAME
  • 概要
  • 说明
  • OPTIONS
  • 另见
  • BUGS
  • AUTHOR
  • COPYRIGHT

最重要的是,我还倾向于嵌入一个$USAGE变量,该变量显示了命令的使用方式:

my $USAGE =<<USAGE;
    myscript.pl -foo <foo> [-bar <bar>] <barfoo>

    or

    myscript.pl -help
USAGE

[...]

if ($help) {
   say $USAGE;
   exit 0;
}

但是,这确实没有必要,因为您可以使用Pod::Usage模块(这是标准Perl发行版的一部分)打印出Pod文档的SYNOPSIS部分。

答案 2 :(得分:1)

POD(或参见perldoc

怎么样?

在Perl社区中非常标准,根据我的经验,它是记录脚本和模块的一种很好且一致的方式。

答案 3 :(得分:0)

根据我的经验,这在Perl世界中并不常见,因此,不,我没有任何格式可以告诉您使用。尽管如此,使用现有格式很容易,只需进行少量修改:

#!/usr/bin/env perl

 #############################################################################
 #
 # @file code.c
 # @brief
 # @b Description: temperature measurement
 # @ university of east london, All rights reserved.
 #
 # $Header: //data/name/source/code.c#10 $
 # $DateTime: 2011/01/18 16:06:25 $
 #
 #############################################################################

use strict;
use warnings;

请注意,Perl没有这样的块注释,但行注释无论如何都适合您现有的格式。另请注意,#!行(如果存在)必须是文件的绝对第一行,否则它将无法执行任何操作。