您的位置:首页 > 其它

Perl的学习笔记--基本语法

2018-03-05 21:37 218 查看

说明

Perl 最初的设计者为 Larry Wall,Perl 借取了 C、sed、awk、shell scripting 以及很多其他程序语言的特性。 Perl 一般被称为 “ 实用报表提取语言” (PracticalExtraction andReportLanguage),有时也被称做“ 病态折中垃圾列表器”(PathologicallyEclectic Rubbish Lister) 。

资料下载

我上传了Perl的基础学习资料神奇的Perl和使用Perl编写CGI程序两个PDF的合集,需要的可以下载学习,链接:http://download.csdn.net/download/weixin_38187317/10270444

优势

Perl 的神奇之处在于 具有 C 语言一样的强大能力和灵活性,但却比 C简单很多。你不用先学习所有 Perl 的东西就可以开始写有用的程序, 这对于那些急于完成任务却不得不 为此编写一堆代码的人来可谓雪中送炭 , 从一开始, Perl 就设计成可以把简单工作简单化,同时又不失去处理困难问题能力的语言, Perl 既强大又好用,所以它被广泛地用于日常生活的方方面面,从宇航工程到分子生物学,从数学到语言学,从图形处理到文档处理,从数据库操作到网络管理。对于不想为程序设计语言买单的人来说, Perl 也不失一种选择,因为 Perl 的解释程序是开放源码的免费软件,使用 Perl 不必担心费用 , Perl 也能在绝大多数操作系统运行,可以方便地向不同操作系统迁移。

基本语法

1 Perl有三种变量
@(数组)、$(标量)、%(哈希变量)
2 注释
# 表示后面的内容为注释

3 变量的作用域
1) 变量前不加作用域限定, 表示该变量为全局变量。
2) 主要有 my 作用域和 local 作用域。
my 作用域主要用来声明局部变量。 my 声明的变量仅作用于声明该的层次及同一层次上定义的其它子程序。
local 作用域只影响声明的层次以及以内的层次, 仅能在 local 作用域声明的层次及以内 层次修改变量值。

4 预定义变量
$_在执行输入和模式搜索操作时使用的默认空格变量
$.文件中最后处理的当前行号
$@由最近一个 eval() 运算符提供的 Perl 语法报错信息
$!获取当前错误信息值,常用于 die 命令
$0获取当前执行脚本的程序名
$$正在执行脚本的 Perl 进程号
$PERL_VERSION /zPerl 解释器的版本、子版本和修订版本信息
@ARGV获取命令行参数列表
ARGV一个特殊的文件
4000
句柄,用于遍历@ARGV 中出现的所有文件名
@INC库文件的搜索路径
@_在子程序中, @_变量含有传给该子程序的变量内容
%ENV关联数组型变量%ENV 含有当前环境信息
%SIG关联数组型变量%SIG 含有指向信号内容的句柄
5 标准输入/输出/错误
STDIN/STDOUT/STDERR
6 变量声明
变量可以不用声明直接使用,如果要判断变量是否已被声明,可以使用define(X)函数判断
7 选择控制
在 Perl 中, 选择控制包括 if/&&、else、elsif、unless/||, 条件表达式值为空串,0,'0'时为假,否则为真。例如下面简单的判断程序



8 循环
循环取数组值:for $value(@array){ print $value;}
使用预定义变量($_)读数组:for(@array){print $_;print;}    #print不接受参数表示输出$_
使用foreach变量:foreach $value(@array){print $value;}
退出循环:last(类似java的break)、next(类似java的continue)
9 文件操作
打开文件:open()

关闭文件:close()

读操作:>

写操作:<

附加写:>>
下面为简单的文件操作use feature qw(say);#使用say函数
say 'hello Perl';

open (FH,'>>Songs.txt');#附加写
print FH "\n4444";
close FH;
#读出文件
open (FH,'<Songs.txt');
while($line=<FH>){ #逐行读取
print $line;
}
close FH;
print "附加写完毕\n";

open (FH,'>Songs.txt');#普通写
print FH '0000';
close FH;
#读出文件
open (FH,'<Songs.txt');
while($line=<FH>){ #逐行读取
print $line;
}
close FH;
print "覆盖写完毕";
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: