in reply to Modules return value

I don't have to remember to put 1; at the end of every new module I write, as my editor is configured to do it for me:
(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::Dump +er;\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)

Opening a new .pm file creates this:

package My; =head1 My =cut use warnings; use strict; #use Data::Dumper; __PACKAGE__

while opening a new .pl script creates this:

#!/usr/bin/perl use warnings; use strict; #use Data::Dumper;

YMMV.

map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]