最近学习Perl, 准备看一遍入门指南,关键的东西还是记录下来,以便以后复习和查看参考.

笔记来自<<Perl语言入门第5版>>

1. 在Perl内部,不区分整数值和浮点数值,所有数字的内部格式都相同,采用"双精度浮点数"运算,自动转换.范围值(1e-100到 1e100)

2. 可以在一个很大的数中间插入下划线,便于阅读: 61_298_040_283_768,在取模运算时,如果其中一边或两边都是负数,则不同的Perl版本可能会有不同结果.不能计算负数的负数次方,因为会得到复数,用复数可以用Math::Complex模块.

3. 字符串:

  1) 最长字符串没有长度限制,遵循"无内置限制"(no built-in limits)的原则

  2) 空字符(NULL)在Perl中没有特殊的意义,Perl会用其他方式记住字符串的长度.而不是用空字符来表示字符串的结尾.

  3) 可以将一个图形文件或编译过的可执行文件读到一个Perl字符串变量中,修改内容后再写回去.

  4) 字符串直接量两种形式:

    单引号内的字符串: 除了单引号和反斜线符,单引号内的所有字符都代表它们自己,包括换行符(注意:\n在单引号内不代表换行,而时反斜线和n两个字符.同时,只有在后面是另一个反斜线或者单引号时,前面的反斜线才有转义的含义)

    双引号内的字符串: 其中的反斜线可以用来表示控制字符,或是用八进制或十六进制写法来表示任何字符.用\n表示换行符.支持变量内插(variable interpolated).

  5) 字符串操作: 用 . 号连接;用小写字符 x 来计算重复,如: "roger" x 3,表示3个roger字符串相连,如果左边操作数是数字,则会先将其转换为字符串,右边操作数如果时小数,会先将其取整.

4.   声明警告信息

 perl -w my_program #方法1

 #! usr/bin/perl -w #方法2

 #! usr/bin/perl
use warnings #方法3 #! usr/bin/perl
use diagnostics #方法4

5.   运算符.

  数值运算使用符号 == != < > <= >= 等等

  字符串中同样的运算采用 eq ne lt gt le ge等等

  undef == 0 返回1,undef eq '' 返回1,undef 既不是字符串,也不是数值,相当于null,当成数值使用时会被当成0,当成字符串使用时会被当成空字符串.Perl程序员常常根据需要,把新变量当成0或空字符串来使用.复制一个undef 变量到另一个变量美柚问题,但是用print 输出就会引发警告.

6. 控制结构

  1> 可选的程序块周围一定要加上花括号表示界限(在C语言中不一定)

  2> Perl 中没有专门的布尔数据类型,它是靠一些简单规则的判断的.

    a) 如果值为数字,则0为假,其他为真

    b) 如果值为字符串,空串为假,其他为真

    c) 非数值或字符串,会先转换成数字或字符串再判断

    d)特例:字符串 '0' 和数字0在Perl中指同一个标量,所以,'0' 是唯一一个被当成假的非空字符串.

    e) 可以使用 ! 来取反

7.   获取用户输入

 #! usr/bin/env perl
$line = <STDIN>; #行输入操作符
if($line eq "\n"){ #'\n'is wrong!
print "This is a blank line!\n";
}else{
print "The input is :${line}\n";
}

用户输入字符串之后再输入换行符'\n',输入信息就保存在字符串$line中,但是'\n'也成了字符串的一部分,它并不会像C语言一样会将'\n'转换成'\0'.很多时候想去掉结尾的'\n'符,可以用chomp()处理.

 #! usr/bin/env perl
$line = <STDIN>;
chomp($line); #去掉换行符'\n'
#也可以 chomp($line = <STDIN>);
if($line eq "a"){ #如果没有去掉,那么就是: ($line eq "a\n")为真
print "yes\n";
}else{
print "$line";
}

chomp的括号也可以去掉,遵循Perl的惯例,除非去掉括号会改变表达式的意义,否则括号用不用都可以.chomp函数返回的是去掉的字符数 ,如果字符串后面有多个换行符,chomp()只会去掉最后一个.

Perl 学习笔记-标量数据的更多相关文章

  1. perl学习笔记---标量

    1.perl 输出时,使用 逗号,连接多个字符串 如:print “The answer is ”,6*7, “.\n” 2.当一个字符串由双引号括起来时,如果变量前没有反斜线,则变量会被其值内插 $ ...

  2. Windows phone 8 学习笔记(2) 数据文件操作

    原文:Windows phone 8 学习笔记(2) 数据文件操作 Windows phone 8 应用用于数据文件存储访问的位置仅仅限于安装文件夹.本地文件夹(独立存储空间).媒体库和SD卡四个地方 ...

  3. #学习笔记#JSP数据交互

    #学习笔记#JSP数据交互 数据库的使用方式:   当用户在第一个页面的查询框输入查询语句点提交的时候我们是用什么样的方式完成这个查询的? 答:我们通过在第一个页面提交表单的形式,真正的数据库查询时在 ...

  4. ArcGIS案例学习笔记_3_2_CAD数据导入建库

    ArcGIS案例学习笔记_3_2_CAD数据导入建库 计划时间:第3天下午 内容:CAD数据导入,建库和管理 目的:生成地块多边形,连接属性,管理 问题:CAD存在拓扑错误,标注位置偏移 教程:pdf ...

  5. GIS案例学习笔记-CAD数据分层导入现有模板实例教程

    GIS案例学习笔记-CAD数据分层导入现有模板实例教程 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 1. 原始数据: CAD数据 目标模板 2. 任务:分5个图层 ...

  6. ArcGIS案例学习笔记-CAD数据自动拓扑检查

    ArcGIS案例学习笔记-CAD数据自动拓扑检查 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 功能:针对CAD数据,自动进行拓扑检查 优点:类别:地理建模项目实例 ...

  7. Windows phone 8 学习笔记(2) 数据文件操作(转)

    Windows phone 8 应用用于数据文件存储访问的位置仅仅限于安装文件夹.本地文件夹(独立存储空间).媒体库和SD卡四个地方.本节主要讲解它们的用法以及相关限制性.另外包括本地数据库的使用方式 ...

  8. Perl 学习笔记-高级控制结构

    1.unless控制结构 类似于独立的else语句; 要么条件为真, 要么执行语句块内的代码;  unless(<condition>){code...;} 等价于  if(<con ...

  9. perl学习笔记——文件测试

    文件测试主要用于查看如文件是否存在.文件大小.文件更新时间等信息. 文件测试操作符 -e  测试文件是否存在: die "Oops!A file called '$filename' alr ...

随机推荐

  1. java项目-----客户端与客户端通信--实现群聊功能的代码

    这是这个网络聊天室项目的原理图: 很简单,首先ABCD是4个客户端,当A发送信息给服务器,服务器实现以广播的形式把信息全发给每个人---群发群聊 客户端代码: package com.aa; impo ...

  2. 协议栈CheckList

    协议?何谓协议?协议是用来干什么的? 与人类活动进行对比即可理解协议,因为我们无时无刻不在执行协议! 举一个典型交互过程: 人类协议(至少说是好的行为方式)要求一方首先进行问候(张三对李四“你好”), ...

  3. node+express+socket.io制作一个聊天室功能

    首先是下载包: npm install express npm install socket.io 建立文件: 服务器端代码:server.js var http=require("http ...

  4. 【做题记录】USACO gold * 50(第一篇)

    orz xhk 5/50 1597: [Usaco2008 Mar]土地购买 $ f[i]=min(f[j]+x[i]*y[j+1]) $ 然后斜率优化 1699: [Usaco2007 Jan]Ba ...

  5. Java:类与继承(隐藏和覆盖的问题)

    盒子先生金金   Java:类与继承(隐藏和覆盖的问题) Java:类与继承   Java:类与继承 对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础.抽象.封装.继承.多态这四大特性都离不 ...

  6. python mac下使用多进程报错解决办法

    使用pychram运行python web,web使用了多进程 mac下运行会提示如下: may have been in progress in another thread when fork() ...

  7. rownum, row_number(), rank() , dense_rank(), partition by ,max() keep 语句的区别与用法

    rownum,rownumber(), rank(),dense_rank()都是用来为记录分配序号的, rownum只能在orderby语句排完序后,在外层嵌套查询才能获得正确的行号,用起来相当复杂 ...

  8. Tkinter Listbox(列表框)

    Python - Tkinter Listbox(列表框): 列表框部件用于显示一个项目列表,用户可以选择的项目数   列表框部件用于显示一个项目列表,用户可以选择的项目数. 语法: 这里是一个简单的 ...

  9. python中nltk的下载安装方式

    首先去http://nltk.org/install.html下载相关的安装程序,然后 在cmd窗口中,进入到python的文件夹内的 Scripts内,运行easy_install pip 安装Py ...

  10. PHP,JAVA,NET 开发比较

    装载出处:http://www.cnblogs.com/sinlang5778/archive/2011/08/10/2133190.html 一.语言: PHP:PHP产生与1994年,其语法混合了 ...