perl文件包含(do,require,use)指令介绍
perl文件包含(do,require,use)指令介绍
发布时间:2016-12-28 来源:查字典编辑
摘要:1.do:1)形式:do'filename';说明:这里filename需要添加单引号,否则会出错;filename可以为任何后缀的,甚至没...

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:perlbininperl -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:perlbinperl -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学习
热门perl学习
脚本专栏子分类