你有一个很好的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 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |