【问题标题】:Is there any way to "auto-use" certain modules everytime I write a script?每次我编写脚本时,有没有办法“自动使用”某些模块?
【发布时间】:2013-05-12 05:28:11
【问题描述】:

正如标题所示,我是否可以自动告诉 perl 在我编写的每个 perl 脚本中包含以下内容(除非另有说明)?

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

我知道写三行并不是什么大不了的事,但是如果我可以更改一些系统文件或其他东西来制作它,那就太好了,这样我就不必再这样做了。

提前致谢。

【问题讨论】:

  • 如果你使用 vim 只需定义一个模板 pl 文件,我的意思是在你的编辑器中做。
  • 我只使用common::sense,尽管阅读该文档以了解这究竟意味着什么。直接回答您的问题只是一个我不想详细说明的链接:shadow.cat/blog/matt-s-trout/a-perl-of-your-own

标签: perl


【解决方案1】:

如果您使用 perl 5.11.0 或更高版本,use strict; 默认启用。你什么时候使用Moose,你会得到免费的strict和免费的warnings

您还可以定义自己的模块,包含所有需要的功能,所有行都简化为一行,例如:

use Myname::defs;

这里回答了如何开发包含您需求的模块:How to make "use My::defaults" with modern perl & utf8 defaults?。如果您不需要utf8,您可以将天才的答案缩短为严格、警告和功能。您也可以查看this questionthis question

对于开发,您还可以考虑:

use strictures 1;

阅读about it here

【讨论】:

  • 这不能回答问题。如果use Myname::defs; 有效,这将不是问题。
  • @felwithe 您是否关注了此答案中的前两个链接?两者都展示了如何编写自己的模块的示例,该模块将诸如限制之类的内容导出到当前包中。
  • 3 年后投反对票 :)。没关系,但很高兴知道原因,例如我该如何改进答案。
【解决方案2】:

使用版本号大于或等于 5.11.0 的use VERSION 语法将在词法上启用限制,就像use strict 所做的一样(除了启用功能之外)。以下:

use 5.11.0;

意思是:

use strict;
use feature ':5.11';

虽然像 emacs 这样的编辑器可以设置为自动添加 3 行,但您可以通过在调用 perl 时提供参数来有效地实现这一点:

perl -w -M5.11.0 foo.pl

[您可以考虑在您的 shell 启动脚本中为 perl 添加一个alias。]

【讨论】:

    猜你喜欢
    • 2014-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 2018-06-09
    相关资源
    最近更新 更多