如何将一堆 perl 模块加载到 perl 脚本中

2024-05-03

这就是我想做的:

在我制作/开发的每个脚本中,我总是调用 Perl 库和子例程,例如:


#! /directory/bin/perl
system('source /directory/.cshrc&');

use Net::Domain qw(hostname hostfqdn hostdomain);
use Time::Local;
use Time::Piece;
use Switch;
use Exporter;
#use strict;

use Data::Dumper qw(Dumper);

use Time::Local;                                        
use Time::Piece; 
use Time::Seconds();                                       

use Tk;
use Tk::BrowseEntry; 
use Tk::Balloon;                                   
use Tk::widgets qw(Checkbutton BrowseEntry);            
use Tk::NoteBook;                                       
use Tk::Pane;                                           

use DBI;
use DBD::Oracle;
$ORACLE_HOME = "/lolDirectory/10.2.0/elinux";    
$ENV{ORACLE_HOME}=$ORACLE_HOME; 

###############
# SUBROUTINES #
###############

&ownerChecker;
&processChecker;    

我希望我可以将所有这些放入一个文件并将其加载到 perl 脚本中,同时运行它,就好像它是 perl 脚本本身的一部分一样:


#! /directory/bin/perl

# load the content of the file and run it as a part of the script

这可能吗?如果可能的话?如果可能的话,从调用库到调用检查器脚本可能会非常通用和标准。


创建一个加载其他“标准”模块的模块是诸如此类的事情的动机perl5i http://metacpan.org/pod/perl5i and 现代::Perl http://metacpan.org/pod/Modern::Perl.

具有词法效果的 Pragma 模块(例如 strict、警告和 autodie)只需加载到模块的导入例程中即可。导出函数的模块需要被告知将其模块导出到其他地方,这可以通过导入::到 http://metacpan.org/pod/Import::Into。最后,只需加载类即可。

Since use http://perldoc.perl.org/functions/use.html发生在编译时,您需要在运行时执行等效操作,即requireing模块并调用它的import method.

下面是打开严格和警告、加载 Time::Local 和加载 Time::Piece 以及激活 say 和 switch 功能的示例。

package My::Perl;

use strict;
use warnings;
use Import::Into;

sub import {
    # import is called as a class method
    my $class = shift;

    # The class which 'use'd this module
    my $caller = caller;

    # same as "use strict" but happens when import() is called.
    require strict;
    "strict"->import;

    # use warnings;
    require warnings;
    "warnings"->import;

    # use Time::Local;
    # use Time::Piece;
    Time::Local->import::into($caller);
    Time::Piece->import::into($caller);

    # use feature qw(say switch);
    require feature;
    feature->import(qw(say switch));
}

1;

现在您只需加载该模块即可。

use My::Perl;

say localtime->year;

不要太疯狂,你希望这些都是通用的。如果您不打算使用 DBI 和 Tk,那么加载它们是愚蠢的。如果您想加载一堆 Tk 模块,请创建一个单独的 My::Tk 模块来执行此操作。出于同样的原因,我不会让模块执行任何代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将一堆 perl 模块加载到 perl 脚本中 的相关文章

  • 从 Perl 脚本 DBI 关闭 MSSQL 服务器

    我正在写一个 perl 脚本 其中我必须关闭我的 mssql 服务器 做一些操作 然后我必须重新启动它 我知道一种方法是使用 netstat 来停止服务 但我不能使用它 所以我尝试安装 DBI 和 DBD ODBC 模块 我可以通过以下代码
  • Perl OO 方法调用第一个参数值 (->)

    就 Perl OO 而言 到底做了什么 gt do 例如我拨打 main 电话 result a b gt mymethod 在我定义的包中mymethod 我使用以下内容 my class 总的来说 我显然没有向mymethod 那么哪里
  • 如何从 Perl 中的字符串中去除无效的 XML 字符?

    我正在寻找一种标准的 经过批准的 可靠的方法 可以在将字符串写入 XML 文件之前从字符串中删除无效字符 我在这里讨论的是包含退格键 H 和换页符等的文本块 There has成为执行此操作的标准库 模块函数 但我找不到它 我在用着XML
  • 如何使用 Perl 从 NCBI 获取 FASTA 核苷酸格式的基因特征?

    我可以手动下载 FASTA 文件 如下所示 gt lcl CR543861 1 gene 1 ATGCTTTGGACA gt lcl CR543861 1 gene 2 GTGCGACTAAAA 通过单击 发送到 并选择 基因特征 FAST
  • 如何设置 $!在 Perl 中

    我想在 perl 中编写一些设置 的函数 与内置 perl 函数类似 当我尝试执行此操作时 它抱怨 参数 无法创建管理员用户 在标量分配中不是数字 我试过用谷歌搜索这个 但不幸的是谷歌不会在 所以结果很难得到 if createUser a
  • 使用 Perl 计算字符串中的连续字符数

    我有一个包含多个连续字符序列的字符串 例如 aaabbcccdddd 我想将其表示为 a3b2c3d4 到目前为止 我已经想出了这个 usr bin perl str aaabbcccdddd str s 1 1 g print str n
  • 使用 Getopt::Long 解析参数的最简洁方法

    我使用 GetOpt 来解析命令行参数 我想添加一个新选项 multi 它应该得到一个如下所示的字符串 key1 abc key2 123 key3 xwz 我不知道用户想要提供多少个自定义密钥 但他可以提供 minimax5键 另外 我想
  • Perl 中字符串之间的字符匹配计数

    我有一个字符串 例如字符串 1 需要与另一个字符串 字符串 2 匹配 两个字符串的长度相同并且不区分大小写 我想打印两个字符串之间的字符匹配数 E g String 1 stranger String 2 strangem Match co
  • 如何在 perl 程序中查找打开的全局文件句柄

    我刚刚发现一个问题 我必须关闭所有打开的文件句柄才能让我的 Apache cgi 脚本继续 我将问题追溯到 Parse RecDescent usr bin env perl use strict use warnings use feat
  • Perl 中的全局变量、子程序变量问题

    如何将子程序变量值转移到另一个子程序变量中 我可以使用全局变量吗 sub foo my myvar Hello sub foo1 my myvar1 myvar how can I get the Hello from myvar 我尝试使
  • 如何在 Perl 脚本中包含另一个文件中的函数?

    这似乎是一个非常简单的问题 但不知何故 我的 Google Fu 失败了 在 Perl 中包含其他文件中的函数的语法是什么 我正在寻找类似C的东西 include blah h 我看到了使用 Perl 模块的选项 但这似乎需要对我当前的代码
  • 在 FOR 循环中打印唯一值

    我有两个文件 myresult 和 annotation 两个文件中的数据似乎是范围 但事实并非如此 这就是为什么我无法将其存储在数组中 我需要使用拆分运算符 以便我可以在 for 循环中使用它并进行比较 现在我需要打印 i myresul
  • 如何轻松地将 Ajax、perl 和 JSON 结合使用?

    我正在尝试使用 Ajax 制作一个网页 Example 我创建了一个 Perl CGU 文件来触发一个简单的帖子 文件 test cgi name 托马斯 回复短信 你的名字是托马斯 我创建了一个可以使用该帖子的 html 文件 但随后页面
  • 由于 lpcap,CPAN 安装 Net::Pcap 和 Packet 模块失败

    最近 我尝试通过 cpan 安装 perl 模块 Net Packet 和 Net Pcap 但它抱怨找不到 pcap 库 所以我正在搜索 cpan 在安装模块时是否接受外部 lib include 目录 但到目前为止还没有运气 looki
  • MIME::Lite - 无法发送邮件 [smtp.gmail.com 不支持 SMTP auth() 命令]

    use MIME Lite use warnings use MIME Base64 use Authen SASL use MIME Lite use MIME Base64 use Authen SASL use warnings us
  • Perl 是否有相当于 Python 的 `if __name__ == '__main__'` 的功能?

    有没有一种方法可以确定当前文件是否是 Perl 源中正在执行的文件 在 Python 中 我们使用以下结构来做到这一点 if name main This file is being executed raise NotImplemente
  • 如何在 perl 中合并两个数组,交替每个数组中的值

    假设我有 2 个如下所示的数组 a1 Vinay Raj harry b1 dude rock 合并后我想要这样的结果 Vinay dude Vinay rock Raj dude Raj rock harry dude harry roc
  • 你能挽救我的负面回顾示例来传达数字吗?

    在 高级正则表达式 一章中掌握 Perl http oreilly com catalog 9780596527242 我有一个损坏的示例 我无法找到一个很好的修复方法 这个例子可能为了自己的利益而试图变得太聪明 但也许有人可以帮我解决它
  • 如何将会话管理添加到简单的 Perl CGI 网页?

    我有一个简单的网页 到目前为止不需要任何登录 它是用 Perl CGI 编程的 我想知道添加会话支持以便获得登录信息的步骤 我不需要非常复杂的方法 因为网页非常简单 另外 我想要一些关于支持 Perl 会话所需的技术 库的建议 我在很多很多
  • Perl:HTTP::微小删除留下损坏的锚标记

    我编写了一个脚本 该脚本收集从数据库读取的缓冲区内的所有 URL 检查该页面是否仍然存在 并使用 HTTP Tiny 从缓冲区中删除 URL 如果该 URL 无法访问或返回无效 问题是 HTTP Tiny 删除左锚标记 例如此处无效的文本

随机推荐