你有一个很好的Perl模板脚本吗?

前端之家收集整理的这篇文章主要介绍了你有一个很好的Perl模板脚本吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在Perl中做了很多编程,并且想知道人们是否有他们使用并愿意分享的“默认”模板Perl脚本.

我开始复制一个具有Getopt功能的旧脚本.我在想人们会做类似的事吗?

解决方法

正如人们在模块中使用方法模板之前所说:使用PMG :: PMGBase;对于初始脚本escafolding,作为emacs用户,我有我的perl-insert-start和perl-add-getoption模板,但编写的内容如下:

(defun perl-insert-start ()
  "Places #!..perl at the start of the script"
  (interactive)
  (goto-char (point-min))
  (insert "#!/usr/bin/env perl\n\n")
  (insert "=head1 [progam_name]\n\n")
  (insert " description:\n\n")
  (insert "=cut\n\n")
  (insert "use feature ':5.10';\n")
  (insert "use strict;\n")
  (insert "#use warnings;\n")
  (insert "#use Data::Dumper;\n")
)

有点无聊.所以最后我更容易拥有一个Perl模板脚本(见下文),并使用run-command-on-region调用它:C-u M- | :在空白缓冲区中选择一个空格后,来自Emacs的〜/ scripts / perl-start-template.pl:

#!/usr/bin/env perl

=head1 [progam_name]

 description:

=cut

use feature ':5.10';
use strict;
use Getopt::Long;

my $prog = $0;
my $usage = <<EOQ;
Usage for $0:

  >$prog [-test -help -verbose]

EOQ

my $help;
my $test;
my $debug;
my $verbose =1;


my $ok = GetOptions(
                    'test'      => \$test,'debug:i'   => \$debug,'verbose:i' => \$verbose,'help'      => \$help,);

if ($help || !$ok ) {
    print $usage;
    exit;
}


print template();


sub template {
    ##
    ### Here start the template code
    ##
    return <<'EOT';
#!/usr/bin/env perl

=head1 [progam_name]

 description: This script prints a template for new perl scripts

=cut

use feature ':5.10';
use strict;
#use warnings;
#use Data::Dumper;
use Getopt::Long;
# use Template;
# use PMG::PMGBase;  
# use File::Temp qw/ tempfile tempdir /;
# use File::Slurp;
# use File::Copy;
# use File::Path;
# use File::Spec;
# use File::Basename qw(basename dirname);
# use List::Util qw(reduce max min);
# use List::MoreUtils qw(uniq indexes each_arrayref natatime);

# my $PMGbase = PMG::PMGBase->new();
my $prog = $0;
my $usage = <<EOQ;
Usage for $0:

  >$prog [-test -help -verbose]

EOQ

my $date = get_date();

my $help;
my $test;
my $debug;
my $verbose =1;

my $bsub;
my $log;
my $stdout;
my $stdin;
my $run;
my $dry_run;

my $ok = GetOptions(
                    'test'      => \$test,'log'       => \$log,'bsub'      => \$bsub,'stdout'    => \$stdout,'stdin'     => \$stdin,'run'       => \$run,'dry_run'   => \$dry_run,);

if ($help || !$ok ) {
    print $usage;
    exit;
}

sub get_date {

    my ($day,$mon,$year) = (localtime)[3..5] ;

    return my $date= sprintf "%04d-%02d-%02d",$year+1900,$mon+1,$day;
}

sub parse_csv_args {

    my $csv_str =shift;
    return [split ',',$csv_str];
}

EOT


}

猜你在找的Perl相关文章