Perl语言学习之变量

1.类型

  Perl只有三种类型,标准变量,数组和散列(哈希),分别用三种符号进行表示,即$,@,%。

#!/usr/bin/perl
$name = "xuzhang";
print "$name\n"; #xuzhang

@months = (‘xuzhang‘,‘mating‘,‘mao‘);

%person = (
    ‘name‘ => ‘xuzhang‘,
    ‘age‘ => 18,
    ‘adress‘ => ‘china‘
    );
print "@months\n"; #xuzhang mating mao
print "$months[0]\n"; #xuzhang
print "my name is $person{‘name‘} and my age is $person{‘age‘} and my adress is $person{‘adress‘}";
#my name is xuzhang and my age is 18 and my adress is china

  上面的代码展示perl的三种数据类型,数组的声明使用@,下标和其他的语言没什么区别,都是从0开始,$#arrayname表示最后一个下标的index,通常可以用

$#arrayname+1代表数组的长度。而散列的应用则是应用花括号,不是javascript中的[],这一点要注意的一下,最简单的就是这样了,但是一嵌套就千变万化了,祝各位好运。

2.引号规范

  Perl 拥有三种类型的引号 , 均提供不同的功能 。 它们分别是单引号 、 双引号和反引号 ( backquote )。

  单引号是一种 “ 民主 ” 的引号 。 它对位于其中的所有字符均一视同仁 。 换而言之 , 单引号不支持特殊字符 , 而双引号则会区别对待一般字符和特殊字符 。 后者会将字符串中的部分字符当作特殊字符对待 。 其特殊字符包括美元符号 $ 、 @ 符号以及转义序列 , 如 \t 和 \n 等 。当命令位于反引号中时 , 该命令将由 shell 执行。

#!/usr/bin/perl
$sum = 5;
print "The number is $sum.\n"; #$sum替换成5
print "I need \$5.00.\n";#转意符号
print "\t\tI can‘t help you.\n";

  单引号里面的特殊字符不进行转译。

  

1 #!/usr/bin/perl
2 print "The date is ", `date`;#The date is 2015年 05月 12日 星期二 21:59:14 CST
3 $directory = `pwd`;
4 #the current directory is /home/xuzhang/shell/perl
5 print "the current directory is $directory

  Perl 的替换符号 。 Perl 提供了另一种表示引号的形式 —— 即 q 、 qq 、 qx 和 qw 结构 。

    1.q 代表一个单引号 。     q/Hello/  等同 ‘ Hello ’
    2.qq 代表一个双引号 。 qq/Hello/ 等同 “ Hello ” 
    3.qx 代表一个反引号 。 qx/date/ 等同 ‘ date ’
    4.qw 代表引用的字列表 。 @list=qw/red yellow blue/; 等同 @list={ ‘ red ’ , ‘ yellow ’ , ‘ blue ’ }

3.数组

  与 C 语言不同 , Perl 并不要求数组元素具有相同的数据类型 ,数组元素可以是数字和字符串的混合体。python,ruby,javascript这几种脚本语言都是一样的。

 1 #!/usr/bin/perl
 2 @grades = (90,89,78,100,87);
 3 #The original array is: 90 89 78 100 87
 4 print "The original array is: @grades\n";
 5
 6 print "The number of the last index is $#grades\n"; #4
 7
 8 #改变了数组最后一个元素的下标
 9 $#grades=3;
10
11 #The array is truncated to 4 elements: 90 89 78 100
12 print "The array is truncated to 4 elements: @grades\n";
13
14 #empty the array
15 @grades=();
16
17 print "The array is completely truncated: @grades\n";
18
19 @digits=(0 .. 10); #0~10
20 print @digits;
21 @letters=( ‘A‘ .. ‘Z‘ ); #A~Z
22 @alpha=( ‘A‘ .. ‘Z‘, ‘a‘ .. ‘z‘ );#A~Za~z
23 @n=( -5 .. 20 );#-5~20

 4.散列

  

 1 #!/usr/bin/perl
 2 %department = (
 3 "Eng" => "Engineering",
 4 "M" => "Math",
 5 "S" => "Science",
 6 "CS" => "Computer Science",
 7 "Ed" => "Education",
 8 );
 9
10 #get the value
11 print "$department{‘M‘}\n";
12
13 #add the new key and value
14
15 $department{‘xuzhang‘} = ‘mating‘;
16 print $department{‘xuzhang‘}; #mating
17
18 #hash slices
19 #散列分片 ( hash slices )。 所谓散列分片 , 是一组散列键的列表 , 并且这些键的关联值是另一
20 #组键的列表 。 该列表由多个散列名组成 , 并以 @ 符号开头 。 散列键的列表则位于花括号中 。
21 %officer= ("NAME"=> "Tom Savage",
22 "SSN" => "510-22-3456",
23 "DOB" => "05/19/66"
24 );
25 @info=qw(Marine Captain 50000);
26 @officer{‘BRANCH‘, ‘TITLE‘, ‘SALARY‘}=@info;
27
28 foreach $key (‘NAME‘, ‘SSN‘, ‘DOB‘, ‘BRANCH‘, ‘TITLE‘, ‘SALARY‘){
29     printf "Key: %-10sValue: %-15s\n", $key, $officer{$key};
30 }
31 # Key: SSN       Value: 510-22-3456
32 # Key: DOB       Value: 05/19/66
33 # Key: BRANCH    Value: Marine
34 # Key: TITLE     Value: Captain
35 # Key: SALARY    Value: 50000 

时间: 2024-08-28 05:55:20

Perl语言学习之变量的相关文章

Perl语言学习笔记 9 正则表达式处理文本

1.替换 s/PATTERN/REPLACE/; #返回是否替换成功的布尔值 可以使用捕获变量,如:s/(\w)/$1/ 匹配失败则不做任何处理 2.定界符 对于没有左右之分的定界符,重复三次即可,如:s///.s### 对于有左右之分的定界符,需使用两对,一对包含模式,一对包含替换字符串,这两对可以不一样,如:s{}{}.s[]{}.s<>[] 3.可选修饰符 /g可进行全局替换,替换所有匹配到的字符串,如:s/ / /g /s:使得 . 匹配所有字符 /i:大小写无关 4.绑定操作符 $f

Perl语言学习笔记 6 哈希

1.哈希的键是唯一的,值可以重复! 2.访问哈希元素 $hashname{"$key"};#哈希为大括号,数组为方括号,键为字符串 $family_name{"fred"} = "firstd";#给哈希元素赋值 3.哈希键支持任意表达式 $foo = "na"; $family_name{$foo."me"};#获取$family_name{"name"}对应的值 4.访问整个哈希 %

Perl语言学习笔记 day 1

1.Perl Practical Extraction and Report Language:实用摘录与报表语言 2.多行注释 (1) =需要顶格写 = description statement; =cut (2)末尾的description需要顶格写 <<description; print "Hello,world!\n"; description 3.数字: 所有数字在Perl内都以双精度浮点数格式存储; 5**3:5*5*5: 4.字符串: 最短的字符串为空字符

Perl语言学习笔记 10 其他控制结构

1.unless控制结构 条件为假时执行,与if相反 可以附带else 2.Until控制结构 条件为假时执行,一直执行到条件为真: 3.条件修饰词 效果等同于: 类似的模式: 4.裸块控制结构 { body; body; .... } 有利于为临时变量圈定有效范围 5.elsif子句 6.自增.自减 同c语言 7.for 用法同c语言 8.for与foreach 在perl中,两者等价,优先选择纯正的foreach 9.5种循环块:for.foreach.while.until.裸块 last

Perl语言学习笔记 day 2

1.在Perl中,子程序名与变量名属于不同的命名空间,可以使用同一个名字分别命名子程序和变量,但不建议这样使用. 2.子程序的定义是全局的,同名的子程序后边的会覆盖掉前边的定义. 3.定义子程序 sub subProgram{ #body } 4.调用子程序 &subProgram 5.所有的子程序都有返回值,默认最后一行的运算结果为返回值. 6.子程序未定义参数时,传递的参数默认传给"@_",可以通过$_[0].$_[1].....访问: 7.在子程序中创建私有变量 my($

Perl语言学习笔记 14 字符串与排序

1.字符串内用index搜索 $where = index($words,$word); ##从words里找到首次出现word的位置,下标从0开始,查找失败则返回-1: 指定开始搜索的地方:$where = index($words,$word,10); ##从10开始往后寻找,包含10 搜索子串最后出现的位置: 限定返回的最大位置:$where = rindex($words,$word,10); ##只搜索下标为10以前的字符. 2.处理子串 substr参数:依次为:字符串.起始下标.要

Perl语言学习笔记 13 目标操作

1.改变目录 chdir "/etc" or die "can't chdir to '/etc'!\n"; 省略参数会回到用户主目录,与cd效果一样: 2.文件名通配 my @all_files = glob "*"; #不包括以点号开头的文件 my @pm_files = glob "*.pm"; 一次匹配多种模式,用空格隔开:my @files = ".* *"; #可以匹配所有的文件,包括以点号开头

Perl语言学习笔记 15 智能匹配与give-when结构

1.智能匹配操作符 替代绑定操作符: 在哈希中查找某一个键: 比较两个数组是否完全相同: 查找列表中是否存在某个元素: 智能匹配操作符与顺序无关,~~ 左右元素可以互换 2.智能操作符优先级 3.given语句 相当于c语言的switch语句 4.given可以测试多个条件,在default前用break,否则会导致default一直执行 5.笨拙匹配(正则表达式方式) 6.多个项目的when匹配 可以在语句中间加上其他语句: Perl语言学习笔记 15 智能匹配与give-when结构,布布扣

Perl语言学习笔记 11 Perl模块

1.模块来源:随Perl发行版本一起打包.从CPAN下载 2.阅读模块文档:perldoc CGI 3.安装模块 makemaker方式: 指定安装目录: Module::build方式: cpan方式: 4.File::basename模块 5.仅选用模块的部分函数 导入引用列表即可 10.不引入任何函数 通过全名的方式使用: 11.File:Spec模块 12.CGI.pm 13.数据库与DBI DBI:数据库接口(Database Interface) 还需安装对应版本的数据库驱动程序DB