7

As the title indicates, is there anyway that I can automatically tell perl to include the following in every perl script that I write (unless noted otherwise)?

use strict;
use warnings;
use feature 'say';

I know it's not a big deal to write three lines, but it would be nice if I could just change some system file or something to make it so I never have to do this again.

Thanks in advance.

Steve P.
  • 14,489
  • 8
  • 42
  • 72
  • if you are using vim just define a template `pl` file, I mean do in within your editor. – perreal May 12 '13 at 05:34
  • 1
    I just use [common::sense](https://metacpan.org/module/MLEHMANN/common-sense-3.4/sense.pm.PL), although read that document to see what exactly this implies. A direct answer to your question is just a link that I don't feel like expounding on: http://shadow.cat/blog/matt-s-trout/a-perl-of-your-own/ – Julian Fondren May 12 '13 at 05:56

2 Answers2

4

If you use perl 5.11.0 of higher, the use strict; is enabled by default. When do you use Moose you get free strict a free warnings too;

You can also define your own module with the all needed features, and all lines are reduced to one line, like:

use Myname::defs;

How to develop a module what includes your needs, is answered here: How to make "use My::defaults" with modern perl & utf8 defaults? . If you don't need utf8 you can short the geniue answer to strict, warnins, and features. You also can check this question and this question too.

For development you can also consider the:

use strictures 1;

Read about it here.

Community
  • 1
  • 1
clt60
  • 62,119
  • 17
  • 107
  • 194
  • This doesn't answer the question. If `use Myname::defs;` worked this wouldn't be a question. – felwithe Aug 03 '15 at 16:20
  • @felwithe Did you follow the first two links in this answer? Both show examples of how to write your own module that exports things like strictures into the current package. – ThisSuitIsBlackNot Aug 03 '15 at 16:29
  • After 3 years a downvote :). It is ok, but would be nice to know the reason, e.g. how I could improve the answer. – clt60 Aug 15 '16 at 05:40
1

Using the use VERSION syntax with a version number greater or equal to 5.11.0 will lexically enable strictures just like use strict would do (in addition to enabling features). The following:

use 5.11.0;

means:

use strict;
use feature ':5.11';

While editors like emacs can be set up to add the 3 lines automatically, you can effectively achieve the same by supplying arguments while invoking perl:

perl -w -M5.11.0 foo.pl

[You can consider adding an alias for perl in your shell startup script.]

devnull
  • 118,548
  • 33
  • 236
  • 227