`
jimmee
  • 浏览: 538856 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

perl编程的一些笔记

    博客分类:
  • perl
 
阅读更多
由于工作需要,需要用perl编写一些程序,所以花了一个下午看了一下perl,基本perl编程
已经可以了,做了一些笔记。

1. 由<STDIN>返回的文本行也包含用户键入的换行符(因为按下了Enter键)。在
大多数情况下,你不希望在字符串的结尾处出现换行符。若要删除换行符,可以像下面这样
使用chomp运算符.

2. 关于字符串和数字的说明
(1) 如果某个元素看上去是个数字,那么Perl在需要数字时可以将它用作数字;
(2) 如果某个元素看上去是个数字,那么当Perl需要一个字符串时,它可以使用数字的字符
串表示法(使用.链接起来)


3. 流程
条件:
if (exp) {
} elsif (exp) {
} else {
}

unless(exp) {
#exp为假时执行
}

数字关系运算符: ==, >, <, >=, <=, !=
字母: eq, gt, lt, ge, le, ne

规则:
数字0为假
空的字符串("")和字符串"0"为假
未定义值undef为假
其他东西均为真

逻辑运算符: &&(and), ||(or), !(not)

循环:
while(exp) {
}

for(init; test; icrement) {
}

注意:

if (test_expression) {
expression;
}
等效为: expression if (test_expression)

循环控制:
last-->等效于break;
next-->等效于continue;

4. 数组
@后跟一个有效变量名表示数组;
(1) qw(xx xxx)-->包含字符串
(2) 范围运算符( 1 . . 1 0 )产生1-10(包括1-10)之间的所有的数的列表
(3) $数组名[下标]的方式访问数组元素
(4) $#arrayname获得数组的最后一个元素的下标; $size=@array得到数组的元素
(5) 遍历数组:
for ($index=0; $index<@array; $index++) {
..$array[$index]...
}

foreach $elem (@array) {
    do with $elem
}

得到的元素都是引用.

while(<STDIN>) {
($firstchar)=split(//, $_);
print "$firstchar\n";
}
$_这里是读取到的当前行


split是分割; join是合并

排序: 默认是ASCII排序, 可以自定义排序顺序
@sorted=sort {
return (1) if ($a > $b);
return (0) if ($a == $b);
return (-1) if ($a < $b);
} @numbers;


5. 文件
(1) 打开和关闭
open(filehandle, filepath) || die--->执行成功, 则打开文件; 执行失败, 则执行die信息
close(filehanle) 关闭句柄
(2) 读取文件
方式一:
while(defined($a=<filehandle>) {
print $a;
}
方式二:
如果尖括号运算符是while循环的条件表达式中的唯一元素,那么perl将自动把输入行赋予该
特殊变量$ ,并重复运行该循环,直到输入耗尽为止
while(<filehandle>) {
print $_;
}

(3) 写入文件
open(filehandle, ">filepath")
open(filehandle, ">>filepath")

print filehandle data


6. 模式匹配
匹配:m/<regexp>;/ (还可以简写为 /<regexp>;/ ,略去 m)
替换:s/<pattern>;/<replacement>;/
转化:tr/<pattern>;/<replacemnt>;/

这三种形式一般都和 =~ 或 !~ 搭配使用(其中 "=~" 表示相匹配,在整条语句中读作 does,"!~" 表示不匹配,在整条语句中读作 doesn't),
并在左侧有待处理的标量变量。如果没有该变量和 =~ !~ 操作符,则默认为处理 $_ 变量中的内容。举例如下:
$str = "I love Perl";

$str =~ m/Perl/; # 表示如果在 $str 中发现 "Perl" 字符串,则返回 "1" 否则返回 "0"。

$str =~ s/Perl/BASH/; # 表示将变量 $str 中的 "Perl" 字符串替换为 "BASH",如果发生此替换则返回 "1",否则返回 "0"。

$str !~ tr/A-Z/a-z/; # 表示将变量 $str 中的所有大写字母转化为小写字母,如果转化发生了则返回 "0",否则返回 "1"。


7. 哈希结构
$map{'key'}='test';

(1) 列表初始化map
成对的当作key-value
(2) 使用=> 初始化
%food=('apple' => 'fruit', 'pear' => 'fruit');
(3) 遍历key
foreach $key (keys %map) {
print "$key"
}

@valueslist = values %map;
@keylist = keys %map;

(4) 检查是否包含某个关键字,不是关键字的值:
if (exists $Hash{keyval} {
}

(5) 删除关键字:
delete $Hash{keyval}

8. 函数
使用@_表示参数
$_[下标]取参数


eclipse的插件支持:
http://e-p-i-c.sf.net/updates


Perl里面的map, 是一种道具,可以让你的函数或者表达式,很方便地施用到一系列对象上去。
1. 让我们先看map的语法
map BLOCK LIST
map EXPR, LIST
BLOCK是一个用{}包围的代码块。EXPR可以是子函数名、正则表达式等。LIST是输入列表。
简单地说,map就是起了一个替代foreach循环的作用,map会把数组LIST中的元素挨个取出,放到系统变量$_中,然后调用BLOCK去 处理。值得强调的是,除非有很特殊的理由,不要去修改$_的值,因为修改$_就是直接改了原始数组里的元素!BLOCK 处理过的结果由map返回,仍然是一个数组。
2. 一个例子:计算一系列文件大小
my @sizes = map { -s $_ } @filenames;
上面例子用-s操作取得一些文件的大小,存到数组中去。
3. 是不是说map函数的输入数组和输出数组一定等长呢?不一定的,看这个
my @books = ( 'Pride and Prejudice', 'Emma', 'Masfield Park', 'Sense and Sensibility', 'Nothanger Abbey', 'Persuasion', 'Lady Susan', 'Sanditon', 'The Watsons');
现在取出书名里面所有用到的单词,并且全部转换成大写
my @words = map { split( //s+/, $_)} @books;
my @uppercases = map uc, @words;
在split起过作用之后,当然@words的长度要比@books长了。
split的用法:http://perldoc.perl.org/functions/split.html
分享到:
评论

相关推荐

    perl socket编程笔记

    Perl Socket 编程笔记 Perl Socket 编程笔记是 Perl 语言中 Socket 编程的使用方法和示例程序的集合,适合初学者。下面是 Perl Socket 编程的详细说明: 一、使用 Perl Socket API 首先需要载入 Socket 模块,即 ...

    perl个人学习笔记

    Perl是一种强大的脚本编程语言,...以上就是Perl学习笔记中涵盖的一些基础概念和操作。继续深入学习,你将能够编写更复杂的Perl脚本,解决各种实际问题。记得实践是学习编程的关键,多做练习,逐步提升你的Perl技能。

    高级Perl编程(黑豹书)+学习手札

    "高级Perl编程(黑豹书)"和"Perl_学习手札"这两本书籍是深入理解并掌握Perl编程的重要资源。 《高级Perl编程》(黑豹书)是Perl编程领域的经典之作,它不仅适合初学者作为进阶读物,也对有经验的Perl程序员提供了...

    perl的学习笔记1

    Perl是一种强大的、高级的、通用的脚本编程语言,尤其在文本处理方面有着出色的表现。这份"perl的学习笔记1"很可能是作者在深入学习Perl过程中积累的...通过阅读和理解这些笔记,你可以更深入地理解和掌握Perl编程。

    Perl TK 读书笔记

    ### Perl TK 读书笔记 #### 一、Fonts 字体 在使用Perl/Tk进行GUI编程时,字体(Fonts)是创建美观用户界面的关键元素之一。本节将详细介绍如何使用和管理Perl/Tk中的字体。 ##### Experimenting with Fonts 实验...

    perl学习笔记

    以下是对Perl学习笔记中提到的关键知识点的详细说明: 1. **标量**: 标量是Perl中最基本的变量类型,用于存储单个值,如字符串或数字。变量名前缀是美元符号“$”。例如,`$first_name = "Melanie"`定义了一个名...

    perl 语言学习笔记

    ### Perl 语言学习笔记知识点概览 #### 第一章:Perl 语言简介及基础语法 - **Perl 的定义**:Perl 是 Practical Extraction and Report Language 的缩写,是一种强大的脚本语言,广泛应用于文本处理、系统管理...

    perl程序员读书笔记

    ### Perl程序员读书笔记知识点解析 #### 一、Perl语言简介 Perl是一种高级脚本语言,以其灵活性和强大的文本处理能力而闻名。它被广泛应用于系统管理、网络编程、...熟练掌握这两个命令对于提高Perl编程效率至关重要。

    PERL系统学习教程笔记.zip

    这个"PERL系统学习教程笔记.zip"压缩包包含了针对Perl初学者的学习资料,是进入Perl编程世界的良好起点。下面将详细探讨Perl语言的一些关键概念和特性: 1. **Perl语法**:Perl的语法深受C语言影响,但也融合了其他...

    perl学习笔记参考

    ### Perl学习笔记参考 #### Perl简介 Perl是一种高级编程语言,全称为Practical Extraction and Report Language,由Larry Wall创建,并持续由他进行更新与维护。Perl最初被设计用于Unix环境下的编程任务,随着...

    perl学习资料!个人学习perl的笔记

    #### Perl编程基础知识 - **脚本执行**: Perl脚本通常通过指定解释器路径的方式执行,例如`#!/usr/bin/perl`或`#!/usr/bin/env perl`。这样做的目的是确保脚本能够正确找到Perl解释器的位置。 - **Perl的规则**: ...

    实用的Perl编程Practical Perl Programming

    为加的夫大学的学生提供的课程笔记汇编包括从入门到高级应用。

    emacs 编程相关perl

    例如,`cperl-mode`是Emacs内置的一种Perl编程模式,提供了语法高亮、自动缩进、括号匹配等功能,使得代码更易读写。此外,`flymake`可以集成到Emacs中,进行实时的语法检查,帮助开发者及时发现错误。 `CEDET`...

    Perl24学时 详细笔记

    ### Perl24学时详细笔记知识点总结 #### 第一学时:Perl简介与注释 - **Perl语言介绍**:Perl是一种高级编程语言,广泛应用于系统管理、Web开发及文本处理等领域。它拥有强大的字符串处理功能,使得在处理文本文件...

    perl学习笔记。。。

    本书是perl的经典入门书籍,介绍了perl中最基本的概念和语法,是perl入门的好书,我向所有想...如果你想了解perl的高级功能或使用perl来更好地完成你的日常工作,还需进一步学习,《perl语言编程》应该是你最好的选择。

    Perl语言入门学习笔记

    Perl语言是一种功能强大的脚本编程语言,尤其适合文本处理和系统管理任务。本文将深入探讨Perl的命令行应用,帮助初学者快速入门。 首先,Perl有很多命令行参数,这些参数可以增强Perl程序的功能和安全性。其中,`-...

    Perl学习笔记

    Perl编程风格 - **建议**:Perl社区提倡遵循一定的编程风格,以提高代码的可读性和维护性。 - **示例**:如使用有意义的变量名、保持代码简洁、合理使用注释等。 #### 12. 参考文献 - **书籍**:《Programming ...

    perl ppd package

    "Perl PPD package" 和 "perl padwalker package" 是Perl世界中的两个关键概念,它们在Perl编程和模块开发中扮演着重要角色。 Perl PPD(Perl Package Description)文件是Perl的扩展包管理系统CPAN(Comprehensive...

Global site tag (gtag.js) - Google Analytics