-
[2006-12-15] Perl教学 第十一篇 文件系统之二
可以看到,这两行并未按我们想象的顺序存贮,为什么呢?我们来分析一下这段程序。
第3行重定向标准输出文件,方法是打开文件file1将它与文件变量STDOUT关联,这也关闭了标准输出文件。第4行重定向标准错误文件...
-
[2006-12-15] Perl教学 第十一篇 文件系统之三
运行结果如下:
$ program file1 file2
This is a line from the first file.
Here is the last line of the first file.
-- end of current file --
This is a line from the second and last file.
Here is th...
-
[2006-12-15] Perl教学 第十一篇 文件系统之四
4、用getc读取字符
函数名 getc
调用语法 $char = getc (infile);
解说 从文件中读取单个字符。
5、用binmode读取二进制文件
函数名 binmode
调用语法 binmode (filevar);
解说 当你的系统(如类DOS系统)对文本...
-
[2006-12-15] Perl教学 第十一篇 文件系统之五
3、文件许可权函数
函数名 chmod
调用语法 chmod (permissions, filelist);
解说 改变文件的访问权限。参数为:
1、permissions为将要设置的权限,其含义见上述mkdir中权限表
2、filelist为欲改变权限的文件列表...
-
[2006-12-15] Perl教学 第十二篇 Perl5中的引用之一
一、引用简介
引用就是指针,可以指向变量、数组、哈希表(也叫关联数组)甚至子程序。Pascal或C程序员应该对引用(即指针)的概念很熟悉,引用就是某值的地址,对其的使用则取决于程序员和语言的规定。在Pe...
-
[2006-12-15] Perl教学 第十二篇 Perl5中的引用之二
运行结果如下:
$ test 1 2 3 4
Pointer Address of ARGV = ARRAY(0x806c378)
Number of arguments : 4
0 : 1;
1 : 2;
2 : 3;
3 : 4;
第5行将引用$pointer指向数组@ARGV,第6行输出ARGV的地址。$pointer返回数组...
-
[2006-12-15] Perl教学 第十二篇 Perl5中的引用之三
与数组类似,通过引用访问哈希表的元素形式为$$pointer{$index},当然,$index是哈希表的键值,而不仅是数字。还有几种访问形式,此外,构建哈希表还可以用=>操作符,可读性更好些。下面再看一个例子:
1 #!/u...
-
[2006-12-15] Perl教学 第十二篇 Perl5中的引用之四
五、多维数组
语句@array = list;可以创建数组的引用,中括号可以创建匿名数组的引用。下面语句为用于画图的三维数组的例子:
$line = ['solid' , 'black' , ['1','2','3'] , ['4','5','6']];
此语句建立了一个含...
-
[2006-12-15] Perl教学 第十二篇 Perl5中的引用之五
六、子程序的引用
perl中子程序的引用与C中函数的指针类似,构造方法如下:
$pointer_to_sub = sub {... declaration of sub ...};
通过所构造的引用调用子程序的方法为:
&$pointer_to_sub(parameters);
·子程...
-
[2006-12-15] Perl教学(13)Perl的面向对象编程之一
本章介绍如何使用Perl的面向对象编程(OOP)特性及如何构建对象,还包括继承、方法重载和数据封装等内容。
一、模块简介
模块(module)就是Perl包(pachage)。Perl中的对象基于对包中数据项的引用。(引用见第x章引用...
-
[2006-12-15] Perl教学(13)Perl的面向对象编程之二
下面语句为使用该包创建对象的例子:
1 #!/usr/bin/perl
2 push (@INC,'pwd');
3 use Cocoa;
4 $cup = new Cocoa;
第一行指出Perl解释器的位置,第二行中,将当前目录加到路径寻找列表@INC中供寻找包时使用。你也...
-
[2006-12-15] Perl教学(13)Perl的面向对象编程之三
五、方法
Perl类的方法只不过是一个Perl子程序而已,也即通常所说的成员函数。Perl的方法定义不提供任何特殊语法,但规定方法的第一个参数为对象或其被引用的包。Perl有两种方法:静态方法和虚方法。
静态方法第...
-
[2006-12-15] Perl教学(13)Perl的面向对象编程之四
1;
现在,我们写一个简单的Perl脚本来使用该类的方法,下面是创建一个Java applet源代码骨架的脚本代码:
#!/usr/bin/perl
use Cocoa;
$cup = new Cocoa;
$cup->setImports( 'java.io.InputStream', 'java.net.*...
-
[2006-12-15] Perl教学(13)Perl的面向对象编程之五
Coffee.pm代码如下:
1 #
2 # The Coffee.pm file to illustrate inheritance.
3 #
4 package Coffee;
5 require Exporter;
6 require Bean;
7 @ISA = qw(Exporter, Bean);
8 @EXPORT = qw(setImports, declareM...
-
[2006-12-15] Perl教学(13)Perl的面向对象编程之六
十一、子类方法的重载
继承的好处在于可以获得基类输出的方法的功能,而有时需要对基类的方法重载获得更具体或不同的功能。下面在Bean.pm类中加入方法printType(),代码如下:
sub printType {
my $class = shif...
-
[2006-12-15] Perl教学(14)Perl5的包和模块之一
一、require函数
用require函数可以把程序分割成多个文件并创建函数库。例如,在myfile.pl中有定义好的Perl函数,可用语句require ("myfile.pl"); 在程序中包含进来。当Perl解释器看到这一语句,就在内置数组变量...
-
[2006-12-15] Perl教学(14)Perl5的包和模块之二
二、包
Perl程序把变量和子程序的名称存贮到符号表中,perl的符号表中名字的集合就称为包(package)。
1、包的定义
在一个程序中可以定义多个包,每个包有一个单独的符号表,定义语法为:
package mypack;
此语句...
-
[2006-12-15] Perl教学(14)Perl5的包和模块之三
5、指定无当前包
在Perl 5中,可以用如下语句指定无当前包:
package;
这时,所有的变量必须明确指出所属包名,否则就无效--错误。
$mypack::var = 21; #ok
$var = 21; #error - no current package
这种情况直到...
-
[2006-12-15] Perl教学(14)Perl5的包和模块之四
三、模块
多数大型程序都分割成多个部件,每一部件通常含有一个或多个子程序及相关的变量,执行特定的一个或多个任务。集合了变量和子程序的部件称为程序模块。
1、创建模块
Perl 5中用包来创建模块,方法是创建...
-
[2006-12-15] Perl教学(14)Perl5的包和模块之五
2、导入模块
将模块导入你的Perl程序中使用use语句,如下句导入了Mymodule模块:
use Mymodule;
这样,模块Mymodule中的子程序和变量就可以使用了。
取消导入模块使用no语句,如下句取消了Mymodule模块的导入:
...