Perl基础

脚本

Perl 是一种脚本语言,它在每次运行前都需要编译。在unix/linux下,通常perl脚本都是以 #!/usr/bin/perl 为开头的。这其实是perl(可执行文件)的全局路径,这个路径当然可以写成其他,只要能找到perl, 但有一点需要注意,perl的全局路径(/usr/bin/perl)不能超过32个字符。

Perl的内容和命令行

Perl路径给出后: #!/usr/bin/perl 接下来就该写perl脚本实际 内容了,你可以什么都不写,也可以写点注释语句,当然最应该写的就是命令行了。通常,注释行都是 以" #" 开头的,内容任意,反正在perl脚本中不会被运行。命 令行是以非空格字符开始并且以" ;"结束的。所以,你可以在把一条命令 写成多行,而直到你给出分号时结束。

直接命令行和子程序(函数)

普通命令行在perl脚本中是由上及下一行一行执行的。然而,子程序可以放到任何地方,只有被调用时才会被执行 。子程序是什么样子的呢?如果你看到一段代码以"sub"开头,并且格式是这样的:sub name {command;} , 那 么这就是子程序了。

其他特殊行

Perl 可以包含其他程序的代码,但需要这样的格式: require something 或者 use something.

引用

单引号: '' 或者: q//
双引号: "" 或者: qq//
引用执行结果: `` 或者: qx//
引用几个词组: ('term1','term2','term3') 或者: qw/term1 term2 term3/
引用一个被引用的字符串: qq/"$name" is $name/;
引用包含 "/": qq!/usr/bin/$file is readdy!;

标量上下文和列表上下文

在Perl中,标量上下文和列表上下文是有区别的,这是Perl脚本语言的一个亮点,这个特性在众多脚本语言当中是 独一无二的,也是非常实用的。

在Perl的子程序中,不仅可以返回一个列表类似于C中的标量,而且还可以返回一个数组,这个数组不仅可 以给出标量上下文中元素的个数还可以给出列表上下文中元素本身。

Perl该特性的巨大价值应该是显而易见的。


变量和运算符

概况

Perl的变量包含很多内容:标量变量、一维数组、二维数组以及关联数组。你可以通过特殊字符来声明Perl的变量 是标量还是数组,如 $variable 表示普通的标量变量; @variable 表示数组; %variable 表示关联数组。 在Perl中,你不需要去区分变量中的字符串和数字,因为Perl可以自动识别它们。

标量

赋值变量: $price = 300; $name = "JOHN"; 变量的计算: $price *= 2; $price = $oldprice * 4; $count++; $worth--; 输出变量的值: print $price,"\n";

数组

赋值数组: $arr[0] = "Fred"; $arr[1] = "John"; 输出数组: print join(' ',@arr),"\n";
二维数组: $arr[0][0] = 5; $arr[0][1] = 7;

哈希(关联数组)

赋值单一元素的哈希: $hash{'fred'} = "USA"; $hash{'john'} = "CANADA";

赋值完整哈希:
%a = (
    'r1',  'this is val of r1',
    'r2',  'this is val of r2',
    'r3',  'this is val of r3',
);
或者:
%a = (
    r1 => 'this is val of r1',
    r2 => 'this is val of r2',
    r3 => 'this is val of r3',
);

赋值

" ="可以把一个值赋给一个变量,或者其他和 "="组合的操作符在赋值的同时也可以做其他操作。

$var = "string"; 把string赋予$var
$var = 5; 把数字赋值给$var

$var .= "string"; $var 后面加string
$var += 5;$var加5
$var *= 5; $var乘以5
$var ||= 5; 如果 $var 为 0 则$var的值为 5
$var x= 3; 使$var重复3次,如 $var 原来为a,则现在 为 aaa

替换和赋值:

($new = $old) =~ s/pattern/replacement/;

比较

字符串的比较: eq ne 如 in: $name eq "mary".
数字的比较: == != >= <= <=> 如: $price == 400.


And/Or/Not

评估成功或者失败的表达式: $yes or die; 意思是,如果$yes 没有定义那么脚本会 exit.
AND 我们可以写成: && 或者 " and" 而OR 我们可以写成: || 或者" or". Not写成 " !"或者 " not".

And, Or 和 Not 一般用于 if() 语句中:
if($first && $second){....;}
if($first || $second){....;}
if($first && ! $second{....;}
这个表示,如果$first 为真,并且$second为假,才会执行{}内的语句。
但大多时候,我们会用unless()语句去替代Not,这样看起来更容易懂:
print if ! $noway; one uses: print unless $noway;

.


分支

if

if(condition){
    command;
}elsif(condition){
    command;
}else{
    command;
}

如果满足 condition, 那么会执行 command;

unless (和if相反)

unless(condition){
    command1;
}else{
    command2;
}

只有满足了condition才会执行command2, 否则执行command1;

循环

while

while(condition){
    command;
}

# 这里的next if表示,当condition2为假时,才会执行

command2 
while(condition1){
    command1;
    next if condition2;
    command2;
}

# 当满足last condition时会退出循环
while(condit
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值