(defun perl-boilerplate () "Basic perl template." (interactive)
(if (or (not (file-exists-p (buffer-file-name (current-buffer))))
(= 0 (buffer-size)))
(let ((strictures "use warnings;\nuse strict;\n\n#use Data::Dumper;\n\n"))
(cond
((string-match "\\([^/]*\\)\.pm$" buffer-file-name)
(let* ((case-fold-search nil)
(package-name
(replace-regexp-in-string "/" "::"
(replace-regexp-in-string
"^.*/[^[:upper:]][^/]*/\\|\\.pm$" ""
buffer-file-name))))
(insert
(concat "package " package-name ";\n"
"\n=head1 " package-name
"\n\n=cut\n\n"
strictures
"\n__PACKAGE__\n"))
(backward-char 14)))
((string-match "\\(?:\.\\(?:p\\(?:er\\)?l\\|t\\)$\\)\\|^[^.]+$" buffer-file-name)
(insert
(concat "#!/usr/bin/perl\n" strictures)))))))
(add-hook 'cperl-mode-hook 'perl-boilerplate)
####
package My;
=head1 My
=cut
use warnings;
use strict;
#use Data::Dumper;
__PACKAGE__
####
#!/usr/bin/perl
use warnings;
use strict;
#use Data::Dumper;