标量数据

标量:数字、字符。可以存储在标量变量中也可以从文件和设备中读取。

数字:所有数字内部格式相同——双精度浮点数。

浮点数直接量:程序员在程序中直接键入的数字。

整数直接量:61298040283768==61_298_040_283_768;

操作:

字符串:字符串长度没有限制。

usr utf8;

单引号内的字符串直接量:除了单引号和反斜线字符外,单引号内的所有字符都表示自身。

双引号内的字符串直接量:

字符串操作符:连接操作.  特殊的字符串重复操作符——x。

"fred" x 3=="fredfredfred"。

perl内置警告功能:用use warning;或者 $perl -w my_program或者#!/usr/bin/perl-w。

更加详细的问题描述:use diagnostics;在perldiag文档中列有简要警告信息和详细诊断说明。

如果把'12fred34'当数字用,perl就会发出警报 'Argument "12fred" isn't numeric.'

虽然发出了警报,但perl仍然会按照默认规则把'12fred34'转换成12。

内插问题:进行内插时,Perl会尽可能使用最长且合法的变量名称。要是你想在内插的值后直接输出字母 数字 下划线,可能会碰上麻烦。

解决方法比较简单,和shell脚本一样,Perl里面我们可以用一对花括号将变量名括起来避免歧义,也可以将字符串拆分成两半,在利用链接操作符拼接起来。

代码点(code point)???

操作符:

布尔值:

上面还隐藏着一个技巧,字符串'0'和数字0是同一个标量值,所以Perl会将他们一视同仁。也就是说,字符串'0'是唯一被当成假的非空字符串。

获取用户输入

<STDIN>

<STDIN>读入时会将最后的回车也读进去。如果需要去掉可以用:chomp()操作去掉。

chomp()操作符:将字符串末尾的换行符去掉。chomp()一般用作连用如:

chomp($text=<STDIN>);

undef值:将undef当作数字用,则其为0;如果把其当作字符串来用,则其值为空字符串。

既然undef作为数字时会被视为0,我们的累加器可以构造成如下(sum不需要初值):

同理也可以做一个字符串累加器。

defined函数:行输入操作符<STDIN>有时会返回undef。在一般情况下返回一行文本,但若没有更多输入,比如读到文件尾(end_of_file)时,就需要用undef来表示这个状况。要判断某个字符串是不是空串需要用defined函数。

#!/usr/bin/perl
$madonna=<STDIN>;
if(defined($madonna)){
print "The input was $madonna.\n";
}
else{
print "NO input available.\n";
}

perl学习笔记一的更多相关文章

  1. Perl 学习笔记-标量数据

    最近学习Perl, 准备看一遍入门指南,关键的东西还是记录下来,以便以后复习和查看参考. 笔记来自<<Perl语言入门第5版>> 1. 在Perl内部,不区分整数值和浮点数值, ...

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

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

  3. Perl 学习笔记-列表和数组

    笔记来自<<Perl语言入门第5版>> 1. Perl中列表指标量的有序集合,数组则是存储列表的变量, 这两个术语经常混用,不过更精确地说,列表指数据,而数组指变量.数组的表示 ...

  4. perl学习笔记

    一.正则表达式 匹配一个文件中的某个单词,并打印出来 #!/usr/bin/perl use strict; use warnings; ; open(FILE, "< temp.pl ...

  5. perl学习笔记(4)——动态加载

    在写perl的时候,如果要应用到各种平台的话,比如linux 和windows,会遇到各种问题,有时就是要根据系统类型来加载各种库,之前写的就是这样的, if($^O eq 'linux'){ use ...

  6. perl学习笔记(3)—— 坑

    (1)用perl来ls一个目录: 写perl的时候,经常要调用到系统命令,perl有很多等价的函数可以用,但是,不小心任性了,就想用system来实现了,好吧,来个ls把,列出指定的一个目录,直接上代 ...

  7. perl学习笔记(2)

    1)记得刚开始写perl的时候,对于一个功能,总是拿目前能用的数据类型来解决问题,不想想有没有更好的,能用能解决问题就好,这就导致了后期,要在函数里面添加功能的时候,函数要添加很多参数,一个函数有7. ...

  8. perl 学习笔记

    一:基础 1:安装perl      centos: yum -y install perl       官网:https://www.perl.org/      升级到5.22:先下载,执行./i ...

  9. 【Perl学习笔记】2. perl中的bless理解

    bless有两个参数:对象的引用.类的名称. 类的名称是一个字符串,代表了类的类型信息,这是理解bless的关键. 所谓bless就是把 类型信息 赋予 实例变量. 程序包括5个文件:person.p ...

  10. 【Perl学习笔记】1.perl的ref 函数

    perl有引用的概念:一组数据实际上是另一组数据的引用.这些引用称为指针,第一组数据中存放的是第二组数据的头地址.引用的方式被用得相当普遍,特别是在面向对象的模块.函数的参数传递等常见.但perl对每 ...

随机推荐

  1. spring in action 学习笔记十四:用纯注解的方式实现spring mvc

    在讲用纯注解的方式实现springmvc之前先介绍一个类:AbstractAnnotationDispatcherServletInitializer.这个类的作用是:任何一个类继承AbstractA ...

  2. Vitamio 视频播放

     资料总结 Vitamio官网:https://www.vitamio.org 源码地址:https://github.com/yixia/VitamioBundle 最佳教程:大名鼎鼎的农民伯伯博客 ...

  3. bzoj3638 Cf172 k-Maximum Subsequence Sum

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3638 [题解] 看到k<=20就感觉很py了啊 我们用一棵线段树维护选段的过程,能选到 ...

  4. bzoj 1579: [Usaco2009 Feb]Revamping Trails 道路升级——分层图+dijkstra

    Description 每天,农夫John需要经过一些道路去检查牛棚N里面的牛. 农场上有M(1<=M<=50,000)条双向泥土道路,编号为1..M. 道路i连接牛棚P1_i和P2_i ...

  5. 原生dialog

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 创建型设计模式之工厂模式(Abstract Factory)

    结构            意图         提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 适用性     一个系统要独立于它的产品的创建.组合和表示时. 一个系统要由多个 ...

  7. Linux驱动修炼之道-SPI驱动框架源码分析(上)【转】

    转自:http://blog.csdn.net/lanmanck/article/details/6895318 SPI驱动架构,以前用过,不过没这个详细,跟各位一起分享: 来自:http://blo ...

  8. Netty源码学习(五)ChannelInitializer

    0. ChannelInitializer简介 直接用ChannelInitializer的注释吧:A special ChannelInboundHandler which offers an ea ...

  9. luogu P1041 传染病控制

    题目背景 近来,一种新的传染病肆虐全球.蓬莱国也发现了零星感染者,为防止该病在蓬莱国大范围流行,该国政府决定不惜一切代价控制传染病的蔓延.不幸的是,由于人们尚未完全认识这种传染病,难以准确判别病毒携带 ...

  10. UITableView的横向使用

    UITableView只支持竖向显示,要实现横向的显示,需要设置tableView 和cell 的transform属性为CGAffineTransformMakeRotate(-M_PI/2) // ...