== 如何import所有函数
默认情况下,Import所有函数。例如
use File::Basename;
== 如何import指定函数
use File::Basename qw/ basename /;
上例只import一个basename函数
== 什么函数也不import
use File::Basename qw/ /;
== import 有什么作用
如果用use载入了模块,事实上该模块所有函数都可以被使用。
差别在于,如果import了某个函数,则该函数可以直接使用,比如,
my $basename = basename $name;
而如果没有import该函数,则需要用全名来使用该函数,比如
my $basename = File::Basename::basename $name;
== 为什么不import某个函数
如果我们自己写的subroutine 和模块的函数同名,则使用的时候会出现混乱,因此,采用不import的策略,然后用全名的方式来使用该函数,避免混乱。
一个特殊又典型的模块File::Spec
== 代码如何在不同系统下都能使用
不是一个简单的问题。比如斜杠的用法不一样,要分别处理。这个可以人工解决,但是有些模块已经考虑了这些问题,并发布了可用的代码来解决问题。比如File::Spec就可以解决斜线的问题。用法
use File::Spec;
...
my $new_name = File::Spec->catfile($dirname, $basename);
rename($old_name, $new_name) or warn "Cannot rename: $!";
== OO模块
File::Spec的另一个特别之处是,他是基于OO面向对象的。因此,使用method的时候,使用 -> 符号。比如上例的 File::Spec->catfile 。
关于CGI和DBI
Perl的两大应用就是网络和数据库。
CGI和DBI是提供相应服务的模块。
由于不在我们硬件工程师的研究之列,故省略。