我想要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。
答案 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
您在CPAN page中看到的所有信息都是由模块中嵌入的POD生成的。与ActiveState的ActivePerl文档相同。
POD格式通常采用与MANPAGES相同的格式。因此,您可以将以下部分设为=head1
:
最重要的是,我还倾向于嵌入一个$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)
答案 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没有这样的块注释,但行注释无论如何都适合您现有的格式。另请注意,#!
行(如果存在)必须是文件的绝对第一行,否则它将无法执行任何操作。