1、Perl 语法入门:
1、print 语句:
print "Hello, world\n"; print("Hello, world\n");
2、引号:
Perl双引号和单引号的区别: 双引号可以正常解析一些转义字符与变量,而单引号无法解析会原样输出。
3、perl数据类型:
1、标量:$myfirst=123;
2、数组:@arr=(1,2,3);
@names = ('google', 'runoob', 'taobao'); @copy = @names; # 复制数组 $size = @names; # 数组赋值给标量,返回数组元素个数 push(@sites, "baidu"); # 在数组结尾添加一个元素 unshift(@sites, "weibo"); # 在数组开头添加一个元素 pop(@sites); # 删除数组末尾的元素 shift(@sites);# 移除数组开头的元素
# 用split()方法将字符串转为数组
@string = split('-', $var_string);
# 用join()方法将数组转为字符串
$string1 = join( '-', @string );
3、散列:%h=('a'=>1,'b'=>2);
%data = ('google', 45, 'runoob', 30, 'taobao', 40); print "\$data{'google'} = $data{'google'}\n";
$size = @keys; # 赋值给标量,返回元素个数
使用 keys 函数读取哈希所有的键:keys %HASH
%data = ('google'=>'google.com', 'runoob'=>'runoob.com', 'taobao'=>'taobao.com');
@names = keys %data;
使用 values 函数来读取哈希所有的值:values %HASH
%data = ('google'=>'google.com', 'runoob'=>'runoob.com', 'taobao'=>'taobao.com');
@urls = values %data;
3、perl流程控制:
1、if语句:
$a = 100; # 使用 == 判断两个数是否相等 if( $a == 20 ){ # 条件为 true 时执行 printf "a 的值为 20\n"; }elsif( $a == 30 ){ # 条件为 true 时执行 printf "a 的值为 30\n"; }else{ # 以上所有的条件为 false 时执行 printf "a 的值为 $a\n"; }
2、case语句:
use Switch; $var = 10; @array = (10, 20, 30); %hash = ('key1' => 10, 'key2' => 20); switch($var){ case 10 { print "数字 10\n" } case "a" { print "字符串 a" } case [1..10,42] { print "数字在列表中" } case (\@array) { print "数字在数组中" } case (\%hash) { print "在哈希中" } else { print "没有匹配的条件" } }
2、for语句:
# 执行 for 循环 for( $a = 0; $a < 10; $a = $a + 1 ){ print "a 的值为: $a\n"; }
3、foreach语句:
@list = (2, 12, 36, 42, 51); # 执行foreach 循环 foreach $a (@list){ print "a 的值为: $a\n"; }
last 语句用于退出循环语句块;
continue 块通常在条件语句再次判断前执行。
foreach $a (@listA){ statement(s); }continue{ statement(s); }
4、perl函数及子程序:
# 函数定义 sub Hello{ print "Hello, World!\n"; } # 函数调用 Hello();
1、perl 函数传参:
Perl 子程序可以和其他编程一样接受多个参数,子程序参数使用特殊数组 @_ 标明。
因此子程序第一个参数为 $_[0], 第二个参数为 $_[1], 以此类推。
不论参数是标量型还是数组型的,用户把参数传给子程序时,perl默认按引用的方式调用它们。
# 定义求平均值函数 sub Average{ # 获取所有传入的参数 $n = scalar(@_); $sum = 0; foreach $item (@_){ $sum += $item; } $average = $sum / $n; print '传入的参数为 : ',"@_\n"; # 打印整个数组 print "第一个参数值为 : $_[0]\n"; # 打印第一个参数 print "传入参数的平均值为 : $average\n"; # 打印平均值 } # 调用函数 Average(10, 20, 30);
子程序可以向其他编程语言一样使用 return 语句来返回函数值。
如果没有使用 return 语句,则子程序的最后一行语句将作为返回值。