包和模块
-- Start require如果我们有一个 date.pl,其中包含了一些关于日期操作的函数,如下: #!/usr/bin/perl sub getToday { my (undef,undef,$mday,$mon,$year) = localtime(time); return sprintf("%04d%02d%02d",$year + 1900,$mon +1,$mday); } # 必须返回一个布尔型的真值,否则 require 时会报错 return 1;
#!/usr/bin/perl # Perl 会在内置数组 @INC 指定的目录中寻找文件date.pl # 如果 @IN C中有多个目录中含有同一个文件,则只有第一个被包含 push(@INC,"D:/Development/Perl"); # 使用 require 将 date.pl 包含到我们的脚本中 require "date.pl"; # 调用 date.pl 中的函数 my $today = &getToday(); print "Today is $todayn";
包我们将上面的例子稍作修改来演示包的使用。 #!/usr/bin/perl # 用包实现名字空间 # 下面的例子定义了 date 包 # 事实上,任何代码都属于某个包,如果没有显示指定包名,则默认属于 main 包 package date; sub getToday { my (undef,$mday); } # 必须返回一个布尔型的真值,否则 require 时会报错 return 1;
#!/usr/bin/perl push(@INC,"D:/Development/Perl"); require "date.pl"; # 调用 date.pl 中的函数,需要指定包名 my $today = &date::getToday(); print "Today is $todayn"; # 调用自定义的同名函数 my $today = &getToday(); print "Today is $todayn"; # 自定的函数 sub getToday { my (undef,$year) = localtime(time); return sprintf("%04d-%02d-%02d",$mday); }
|