• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    perl文件包含(do,require,use)指令介绍
    POST TIME:2021-10-18 15:12

    1. do:

    1)形式:
    do 'filename';
    说明:
    这里filename需要添加单引号,否则会出错;
    filename可以为任何后缀的,甚至没有后缀,不要求是pl或者pm等。

    2)关于do的理解:
    do 'filename'
    首先需要读入filename的文件(如果读入失败,返回undef而且会设置$!变量);
    如果读入成功,然后对filename读入的语句进行编译(如果无法编译或者编译错误,会返回undef而且设置错误信息到$@变量);
    如果编译也成功,do会执行filename中的语句,最终返回最有一个表达式的值。

    简短表达do 'filename'的功能,就是能够将filename中的文字全部加载到当前文件中。

    3)理解do的用法:
    a. 将文件拆分:
    main.pl:

    复制代码 代码如下:

    use strict;
    do 'seperate'; #文件可以以任何后缀命名甚至没有后缀;
    seperate:
    print "Hello from seperate file! :-)";

    b. 可以在seperate中定义函数,然后在当前文件中调用:
    main.pl

    复制代码 代码如下:

    #!/usr/bin/perl
    use strict;
    do 'seperate';
    show();
    seperate:
    sub show{
        print "Hello from seperate file! :-)";
    }

    c. 可以在seperate中定义package,然后在当前文件中调用:
    main.pl

    复制代码 代码如下:

    #!/usr/bin/perl
    use strict;
    do 'seperate';
    Show::show_sentence();
    seperate:
    package Show;
    sub show_sentence(){
        print "Hello from seperate file! :-)";
    }
    1;
    __END__
    #都不需要文

    件名必须与package的名称相同,而且seperate都不需要pm后缀。

    从上面的例子,很容易得到,使用do可以方便地实现文件包含。
    更多参看http://perldoc.perl.org/functions/do.html

    2. require
    参看http://perldoc.perl.org/functions/require.html
    1)形式:
    require 'filename';
    require "filename";
    这两种相同,而且和do的使用方法都类似;

    require Module;
    如果不加单引号或者双引号的话,后面的Module将被解析为Perl的模块即.pm文件,然后根据@INC Array中搜索Module.pm文件。首先在当前目录下搜索Module.pm的文件(用户自定义的),如果找不到再去Perl的 (@INC contains: C:/Perl/site/lib C:/Perl/lib .)寻找。
    如果Module中出现::,如require Foo::Bar; 则会被替换为Foo/Bar.pm

    2)关于require使用的解释:
    如果使用require 'filename'或者require "filename"来包含文件的话,使用方法和do完全近似;
    如果使用require Module的话,则需要定义Module.pm的文件而且文件中的package要以Module来命名该模块。
    main.pl

    复制代码 代码如下:

    #!C:\perl\bin\inperl -w
    use strict;
    require Show;
    Show::show_header();

    Show.pm
    #Show.pm

    复制代码 代码如下:

    package Show;
    sub show_header(){
        print "This is the header!  ";   
        return 0;
    }
    sub show_footer(){
        print "This is the footer!  ";   
        return 0;
    }
    1;
    __END__

    3. use
    参看http://perldoc.perl.org/functions/use.html
    1)形式:
    use Module;
    use只能够使用模块,而且和require的用法相似,需要Module.pm的文件,而且文件中的package需要已Module来命名该模块。

    main.pl

    复制代码 代码如下:

    #!C:\perl\bin\perl -w
    use strict;
    use Show;
    Show::show_header();

    Show.pm

    复制代码 代码如下:

    #Show.pm
    package Show;
    sub show_header(){
        print "This is the header!  ";   
        return 0;
    }
    sub show_footer(){
        print "This is the footer!  ";   
        return 0;
    }
    1;
    __END__

    2)require和use的区别:
    require:
    do the things at run time; (运行时加载)
    use:
    do the things at compile time; (编译时加载)

    4. perlmod - Perl modules (packages)
    参考http://perldoc.perl.org/perlmod.html
    1)  示例:

    复制代码 代码如下:

    #Show.pm
    package Show;
    sub show_header(){
        print "This is the header! /n";  
        return 0;
    }
    sub show_footer(){
        print "This is the footer! /n";  
        return 0;
    }
    1;
    __END__

    2)
    一般文件名需要和package名称相同,这里为Show;
    可以定义变量和函数;
    不要忘记1;
    以及最后的__END__

    3)
    在别的文件中,使用require或者use使用模块的时候:

    复制代码 代码如下:

    use Show;
    #require Show;
    Show::show_header();

    5. Perl的函数定义及调用:
     

    复制代码 代码如下:

    sub fun_name(){
     #...
    }

    1) 如果定义在使用之前,在使用的时候直接fun_name();即可
    2)如果定义在使用之后,之前使用的时候需要使用fun_name();来调用函数。

    6.
    小结:
    综上,文件包含可以提高代码的复用性,在Perl是实现文件包含可以才去两条路:
    1)使用do或者require(带引号的)那种方式;
    2)使用require Module或者use Module的模块方式;
    两者均可。

    上一篇:perl哈希hash的常见用法介绍
    下一篇:分享下perl胶水实现前后台对接的方法
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信