加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 23:35:22 所属栏目:大数据 来源:网络整理
导读:我在Perl中做了很多编程,并且想知道人们是否有他们使用并愿意分享的“默认”模板Perl脚本. 我开始复制一个具有Getopt功能的旧脚本.我在想人们会做类似的事吗? 解决方法 正如人们在模块中使用方法模板之前所说:使用PMG :: PMGBase;对于初始脚本escafolding,
我在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 perlnn")
  (insert "=head1 [progam_name]nn")
  (insert " description:nn")
  (insert "=cutnn")
  (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


}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读