前面说过在PerlCC编译可执行程序的时候,不要使用require函数,这是没有错的。但是有很多人写require习惯了,而且不经常接触OOP模式,所以不习惯。
其实使用use比require 好很多,还有很多人用require引入变量,这是大大错误,这是一种程序上编写的失误,所以建议以后大家不要用这种方式。编译的时候也不要用这种放式?那么用什么方式?如果你是一个有经验的Perl程序员,你应该知道。使用OPEN函数,传送变量值。这是编译Perl程序的关键,一些定量(不变的量),最好放在程序内部,变量以及客户所需要设置的量使用我先前说的那种方式。具体实践方法:
Tanshuai OpenConf 函数代码:
sub Open_Conf {
open(FILE, "
my @Conf_Info =
close(FILE);#关闭~文件
my $Conf_Infos ;定义~局部变量
foreach $Conf_Infos (@Conf_Info) {#循环
($name, $value) = split(/=/, $Conf_Infos);#区分~名称和数值
($value, $dot) = split(/;/, $value);#区分~结束符
$value=~s"''""gi;#删除~不必要的符号
$CFG{$name} = $value;#复制~参数到散列变量
}
}
配置文件原形:
Port=''81'';
IP="127.0.0.1";
Listen=''5'';
调用方法:
Open_Conf(''../Conf/httpd.cfg'');#../Conf/httpd.cfg为路径和文件名
$port = $CFG{''Port''};#将文件原型的Port量复制到$port上,当然你可以不必这样做,可以直接引HASH
$ip = $CFG{''IP''};#和上面的一样
这样就解决了配置变量的问题,我想这个函数对某些人一定会有很重要的意义。
在这里OOP就是use 方式的调用。
现在我们要着重讨论OOP问题了,如果你不想把一大堆的程序代码写在一个文件中,那么使用OOP就最好了,原来是可以使用require,但这里不可一。OOP在Perl的好处显而易见,首先可以编译,即使不编译,它也同require有明显差异。
OOP是在程序需要时调入,不需要时自动消失(通常说破坏对象)。require则不然,一旦调入一直存在,除非你使用exit 函数,所以在某些方面影响了程序的效率。
例如我们要写一个Shell程序,一共需要一下部分:输入/输出(I/O)、命令判断(CMD)、System(系统操作)。
我们平时也可以使用require,在编译的时候就好了,同样我们虽然可以按照子程序放在一个程序里面,但是在这里只是例子,但是在大宗商业项目中,这样做是显然费时费力的,会增加维护成本,无法联合开发等多种弊端。
我们把他们分为4个文件3个模块一个主程序(编译):IO.pm、CMD.pm、System.pm、Shell.pl。
首先要构造对象:
Tanshuai 对象构造方法:
package <包名或者对象名>;
my IN;#定义~包(对象)内部的散列
sub new {#构造函数名
my $class = shift;
IN= @_;#将调用对象的数值传入散列IN中
my $self={};
bless $self,$class;
return $self;
}
虽然上面的构造有些不好的地方,但是它是通用对象的构造方法,利于调试,如果你认为没程序上的问题,就可以“封包”,适当修改变量传引方式。
这里的所有对象只有是一个单一函数,只包括:构造对象和操作对象的两个部分,这是一个简单的对象引用,但是这种应用在实
