1.变量(词法变量,包变量)
词法变量:
标量:用$开头,字符串和数字等,e.g $count = 0;
数组(有序):用@开头,一列数值,用编号做键字,e.g @values = (1,2,3,4);
散列(无序,Hash,又称关联数组):用%开头,键值对,用字串做键字,e.g %longday=("Sun"=>"Sunday","Mon"=>"Monday","Fri"=>“Friday”); 取值:$longday{"Mon"}
子过程:用&开头,一段可以调用的Perl代码,e.g &how
类型团:用*开头,e.g *struck
常量:使用 constant 编译指示允许定义常量
引用
创建:使用反斜杠操作符可以创建引用, \相当于C中的&
[,,,]和{,,,}创建一个指向数组和Hash的引用,它们创建一个自己内容的副本并返回指向它的引用,所以于\不一样。 e.g @array = [1,2,3,4]; @copyhasref = {%hash};
访问:$相当于 C 中的*,用于访问引用指向的值。
可以通过ref()函数返回引用的类型。
e.g: $rl = \@l; #指向已存数组的引用
$rl = [1,2,3]; #指向匿名数组的引用
push(@$rl,"a"); #解引用
print $rl->[3]; #$rl 指向的数组的第四个元素
变量声明:如果列出多个变量,要放在()里,如my($a,$b,$c)
my 创建私有变量(局部变量)
out 进行有选择的访问全局变量(词法范围全局声明)
local 给全局变量提供临时的值(动态范围变量)
my $i = 10;
[
my $i = 99;
#这里i的值是99
}
#这里i的值是10
out $name = "x"
{
out $name = "y"
#这里name值为y
}
#这里name值为y
local $name = "x"
{
out $name = "y"
#这里name值为y
}
#这里name值为x
包变量:属于某个包的变量可以在任何地方使用。在包内部使用包变量不需要加包名,在包外部使用包变量需要加包名。
声明:package Logger;
变量声明:use strict;
在 perl 中,一个对象类只不过是一个包,而一个对象实例只不过是一个引用。
继承:声明一个类的继承关系是通过把父类名称加到该类的@ISA 包变量中实现。例如,类PerlGuru 声明它继承 PerlHacker 如下:
package PerlGuru;
@ISA = ("PerlHacker");
2.操作符
算数操作符: + - * / **(乘幂) %(取余)
字符操作符: 连接操作符” .”和复制操作符”x” e.g @array = (1,2,3,4,5) x 2; # @array =(1,2,3,4,5,1,2,3,4,5);
比较操作符: < <= == != > >= <=>(比较两个值。当两个值相等时返回 0,当第一个值大时返回1,第二个值大时返回 –1。)
逻辑操作符: ! || &&
位操作符: &(位与) |(位或) ~(位非) ^(位异或) <<(左移) >>(右移)
引用操作符: \ 它创建并返回一个指向它随后的各种类型的值、变量或子例程的引用。由于它并不会拷贝原值,因此改变引用指向的值会改变原始值。
e.g $message = ”hello ref”;
$messageref = \$message;
$$messageref = ”hello world”;
print $message;
#打印 hello world
箭头操作符: -> 箭头操作符有两种用法:第一种用法是访问引用中的数据元素。e.g:
$array_element = $arrayref -> [1];
$hash_element = $hashref -> {$key};
这种方法的一个特例是使用多维数组或者 hash 的 hash,其中隐含使用了箭头操作符,以下两种方法是等价的:
$element = $pixel[$x][$y][$z]; 和 $element = $pixel[$x] -> [$y] -> [$z];
第二种用法是在对象中使用,通过它来调用一个对象(或实例)的方法:
$object ->method(@arguments);
范围操作符: .. 范围操作符可以在列表上下文或在标量上下文中使用。它在这两种方式下工作模式不一样。在列表上下文中,范围操作符返回一个列表,该列表的第一个元素是左边的操作数,以后的元素是依次递增这个操作数,直到右边的元素为止。如果左边等于右边,则返回一个单元素的列表;如果左边的操作数更大,则返回空列表。
e.g: 1..5 返回列表: (1,2,3,4,5) ’a’..’e’返回列表:(‘a’,’b’,’c’,’d’,’e’)。
三元操作符: ? : 可以看成是一个 if 语句。例如下面的操作: <condition>?<true-result>:<false-result>; 其等价的表达形式是:
if <condition> then return <true-result> else return <false-result>;
e.g 取得最大值: $max_value=($a > $b ? $a : $b);
尖角操作符: <> 当打开一个用于接受输入的文件句柄时,可以用于读入一行
获取用户输入:
print STDOUT "Enter a number:";
$num = <STDIN>;
print STDOUT "the num is $num";
文件测试操作符; -e $a(存在) -r $a(可读) -w(可写) -d(目录) -f(文件)
正则表达式操作符: =~ (联接字符串和正则表达式匹配。如果正则表达式匹配成功,整个表达式返回 true ,否则返回 false。) 和 !~
词法变量:
标量:用$开头,字符串和数字等,e.g $count = 0;
数组(有序):用@开头,一列数值,用编号做键字,e.g @values = (1,2,3,4);
散列(无序,Hash,又称关联数组):用%开头,键值对,用字串做键字,e.g %longday=("Sun"=>"Sunday","Mon"=>"Monday","Fri"=>“Friday”); 取值:$longday{"Mon"}
子过程:用&开头,一段可以调用的Perl代码,e.g &how
类型团:用*开头,e.g *struck
常量:使用 constant 编译指示允许定义常量
引用
创建:使用反斜杠操作符可以创建引用, \相当于C中的&
[,,,]和{,,,}创建一个指向数组和Hash的引用,它们创建一个自己内容的副本并返回指向它的引用,所以于\不一样。 e.g @array = [1,2,3,4]; @copyhasref = {%hash};
访问:$相当于 C 中的*,用于访问引用指向的值。
可以通过ref()函数返回引用的类型。
e.g: $rl = \@l; #指向已存数组的引用
$rl = [1,2,3]; #指向匿名数组的引用
push(@$rl,"a"); #解引用
print $rl->[3]; #$rl 指向的数组的第四个元素
变量声明:如果列出多个变量,要放在()里,如my($a,$b,$c)
my 创建私有变量(局部变量)
out 进行有选择的访问全局变量(词法范围全局声明)
local 给全局变量提供临时的值(动态范围变量)
my $i = 10;
[
my $i = 99;
#这里i的值是99
}
#这里i的值是10
out $name = "x"
{
out $name = "y"
#这里name值为y
}
#这里name值为y
local $name = "x"
{
out $name = "y"
#这里name值为y
}
#这里name值为x
包变量:属于某个包的变量可以在任何地方使用。在包内部使用包变量不需要加包名,在包外部使用包变量需要加包名。
声明:package Logger;
变量声明:use strict;
在 perl 中,一个对象类只不过是一个包,而一个对象实例只不过是一个引用。
继承:声明一个类的继承关系是通过把父类名称加到该类的@ISA 包变量中实现。例如,类PerlGuru 声明它继承 PerlHacker 如下:
package PerlGuru;
@ISA = ("PerlHacker");
2.操作符
算数操作符: + - * / **(乘幂) %(取余)
字符操作符: 连接操作符” .”和复制操作符”x” e.g @array = (1,2,3,4,5) x 2; # @array =(1,2,3,4,5,1,2,3,4,5);
比较操作符: < <= == != > >= <=>(比较两个值。当两个值相等时返回 0,当第一个值大时返回1,第二个值大时返回 –1。)
逻辑操作符: ! || &&
位操作符: &(位与) |(位或) ~(位非) ^(位异或) <<(左移) >>(右移)
引用操作符: \ 它创建并返回一个指向它随后的各种类型的值、变量或子例程的引用。由于它并不会拷贝原值,因此改变引用指向的值会改变原始值。
e.g $message = ”hello ref”;
$messageref = \$message;
$$messageref = ”hello world”;
print $message;
#打印 hello world
箭头操作符: -> 箭头操作符有两种用法:第一种用法是访问引用中的数据元素。e.g:
$array_element = $arrayref -> [1];
$hash_element = $hashref -> {$key};
这种方法的一个特例是使用多维数组或者 hash 的 hash,其中隐含使用了箭头操作符,以下两种方法是等价的:
$element = $pixel[$x][$y][$z]; 和 $element = $pixel[$x] -> [$y] -> [$z];
第二种用法是在对象中使用,通过它来调用一个对象(或实例)的方法:
$object ->method(@arguments);
范围操作符: .. 范围操作符可以在列表上下文或在标量上下文中使用。它在这两种方式下工作模式不一样。在列表上下文中,范围操作符返回一个列表,该列表的第一个元素是左边的操作数,以后的元素是依次递增这个操作数,直到右边的元素为止。如果左边等于右边,则返回一个单元素的列表;如果左边的操作数更大,则返回空列表。
e.g: 1..5 返回列表: (1,2,3,4,5) ’a’..’e’返回列表:(‘a’,’b’,’c’,’d’,’e’)。
三元操作符: ? : 可以看成是一个 if 语句。例如下面的操作: <condition>?<true-result>:<false-result>; 其等价的表达形式是:
if <condition> then return <true-result> else return <false-result>;
e.g 取得最大值: $max_value=($a > $b ? $a : $b);
尖角操作符: <> 当打开一个用于接受输入的文件句柄时,可以用于读入一行
获取用户输入:
print STDOUT "Enter a number:";
$num = <STDIN>;
print STDOUT "the num is $num";
文件测试操作符; -e $a(存在) -r $a(可读) -w(可写) -d(目录) -f(文件)
正则表达式操作符: =~ (联接字符串和正则表达式匹配。如果正则表达式匹配成功,整个表达式返回 true ,否则返回 false。) 和 !~