文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>一步一步研究OTRS(02)

一步一步研究OTRS(02)

时间:2007-05-18  来源:beikerray119

 Kernel::System::Web::InterfaceAgent;

     

    第一句:

    package Kernel::System::Web::InterfaceAgent;

     

    package的作用是定义包的名称,之后所定义的所有变量和子程序都储存在这个包中,直到遇到另一个package语句。

    在程序里面可以任意在包之间切换,比如:

     

    package pack1;

    $var = 1;

    package pack2;

    $var = 2;

    package pack1;

    print $var;

     

    运行该程序将会输出:“1”。

    在Perl中,有个特殊的包:main,存贮变量和子程序的名字的缺省符号表是与名为main的包相关联的。如果在程序里定义了其它的包,当你想切换回去使用缺省的符号表,可以重新指定main包:

    package main;

     这样,接下来的程序就好象从没定义过包一样,变量和子程序的名字象通常那样存贮。

    在Perl中,引用一个包中的变量或子程序可以使用如下格式之一:

    包名::变量名

    包名’变量名

    建议使用第一种方式,未来可能会淘汰第二种方式。

    另外,有一些特殊变量即使在包中调用,仍在main包中起作用,他们是:

    • 文件变量:STDIN,STDOUT,STDERR和ARGV
    • 变量:%ENV,@INC,$ARGV和@ARGV
    • 其它含有特殊字符的系统变量

    另外,你可以在perldoc上找到详细的介绍,如果你不惧en;另外,这些文章我都尽量转载到我的BLOG中,以下是Package的perldoc:

    http://blog.chinaunix.net/u/29953/showart_303926.html

     

    搞清楚了包的概念,再升级到模块就容易了。

    大型开发中,一般会把程序分割成多个部分,每个部分完成特定的任务,这样提高了代码的重用性,也使得开发工作更易管理,那这每个部分就被称为模块。

    创建模块很简单,只要把包存为同名的,后缀为pm的文件就好了,比如名为module的包保存为module.pm。

    另外请注意,在模块的最后一定要加入:

    1;

    否则模块不能被正确识别。

     

    那么引用一个模块可以使用use语句,如:

    use Kernel::System::Web::InterfaceAgent;

    引用模块以后就可以直接使用模块里面定义的方法了。

    Perl的发行版中,内置了很多模块,另外还有一个很好的东东CPAN,这我会另开专题讨论,使用起来还是很简单的,你可以自己去查看http://cpan.perl.org

     

    模块的开发涉及到Perl的面向对象编程,事实上Perl并不是真正的面向对象,它采用了一个很狡猾的办法以达到面向对象的目的,这个暂不讨论。

     

    好了,回到OTRS,接下来的一句是

     

    use strict;

     

    这个说起来也可以长篇大论了(Perl里面随便一个东西都可以长篇大论,如果大学论文不知道怎么写,来学习Perl吧),我这里只是简单的说几句,当你的程序超过一页时,请务必使用use strict,它会强迫你使用my定义变量,这样基本可以避免因为拼写造成的错误,这时如果你使用了没有用my定义的变量会收到如下错误:

    Global symbol "$aaaa" requires explicit package name at ./this.pl line 5.

    查看你的程序,第五行你会发现没有用my定义的变量。

    当然还有用use warning或者直接在命令行参数里用“#!/usr/bin/perl –w”的,这里不再详细介绍,当然这些都不能完全解决问题,但是一个比一个懒的Perl 程序员,你想去超过500行的代码里查找一个拼写错误吗?

     

    接着往下看

     

    use vars qw($VERSION @INC);

    $VERSION = '$Revision: 1.17.2.1 $';

    $VERSION =~ s/^\$.*:\W(.*)\W.+?$/$1/;

     

    这里给出了这个模块的版本号

    然后是引用了一大堆模块:

     

    # all framework needed modules

    use Kernel::Config;

    use Kernel::System::Log;

    use Kernel::System::Main;

    use Kernel::System::Encode;

    use Kernel::System::Time;

    use Kernel::System::Web::Request;

    use Kernel::System::DB;

    use Kernel::System::Auth;

    use Kernel::System::AuthSession;

    use Kernel::System::User;

    use Kernel::System::Group;

    use Kernel::System::Permission;

    use Kernel::Output::HTML::Layout;

     

    先打住吧,我想想是深入这些模块还是接着往下看。

     

    源文档 <file:///Z:\个人文件\BLOG\编程开发\perl\一步一步研究OTRS(02).docx>

     

相关阅读 更多 +
排行榜 更多 +
疯狂兔子人乐园

疯狂兔子人乐园

休闲益智 下载
空中飞机飞行

空中飞机飞行

休闲益智 下载
小姐姐历险记2

小姐姐历险记2

休闲益智 下载