Perl入门(一)Perl的基本类型及运算符
在学习Perl的基础之前,还是希望大家有空去看以下Perl的简介。百度百科
一、Perl的基本类型
Per的基本类型分为两种:数值型和字符串型。
数值型可细分为
- 整数型。如123。
- 浮点型。如123.123、0.123456。
- 科学计数型。如1.23E2、1.23e2。
- 大数值类型。如1_156_123_585_123。
字符串型
- 字符串。如“123456”,‘123’,qq(this is a string too!)
二、用变量存储基本类型值
Perl定义变量很简单。格式为:$变量名 (PS:Perl的程序员肯定是想钱想疯了);引用的方式也很简单:$变量名。
下面给出一个简单的示例:
#!user/bin/env perl -w
$int = 123456;
$float = 123.456789;
$sci_notation1 = 1.2E10;
$sci_notation2 = 1.2e10;
$big_num = 1_789_854_654_894_654_355_223; $string = "this is a string"; printf "int value :$int\n";
printf "float value :$float\n";
printf "sci_notation1 value :$sci_notation1\n";
printf "sci_notation2 value :$sci_notation2\n";
printf "big_num value :$big_num\n";
printf "string value :$string\n";
输出结果如下
int value :123456
float value :123.456789
sci_notation1 value :12000000000
sci_notation2 value :12000000000
big_num value :1.78985465489465e+021
string value :this is a string
简单解释一下:
- 科学技术型数值中E不区分大小写
- 大数值类型采用“_”进行分隔仅是为了方便阅读,上面采用千分法,你也可以采用万分法,也可以直接不使用“_”
- print和printf均为内置的输出函数。如果想要接收键盘输入数据可以采用后面的格式:$from_key_board = <STDIN>; 从DOS窗口接收输入,存储到$from_key_board中
注意:
- 如果数据过长,会有精度上的舍入。
- 字符类型的表示
- 可以使用双引号"",也可以使用单引号'',必须成对出现。
- 当单引号内部内容包含单引号或双引号内部内容包含双引号时,可以采用反斜杠“\”进行转义。如:"Tom said:\"it is rainning outside!\"".
- Perl提供另外一种字符串表示方式qq代表双引号(not Tencent QQ),q代表单引号,配合界限符使用。界限符可以使任意非空格、tab、换行字符。例如:qq(Tom said :"it is raining outside")。但是不推荐使用数字和字母作为界限符,会造成程序阅读困难.
- 但是也会碰到第二点的问题,如果内部字符创包含界限符,1.成对出现的是允许的,但是会降低可读性。2.使用转义字符。3.界限符那么多,换一个。
- 上述printf输出中有引用到之前定义的变量。这种方式仅在“”或pp内部可以使用,其他方式不可。
三、Perl中运算符
多数都和其他语言一样,如果你有一定的语言基础,可以只看红字部分
赋值运算符
- = 赋值
- += 例如:$num += 1; 等价于$num =$num+1;
- -= 例如:$num -= 1; 等价于$num =$num-1;
- *= 例如:$num *= 1; 等价于$num =$num*1;
- /= 例如:$num /= 1; 等价于$num =$num/1;
- %= 例如:$num %= 1; 等价于$num =$num%1; #取模,除以那个数取余数
- **= 例如:$num **= 2; 等价于$num =$num**2; #**代表幂,$num的2次方
- .= 例如:$str.=“ string” 等价于 $str = $str." string";# . 代表连接符,将两个字符串拼接起来
算术运算符
- +
- -
- *
- /
- % 取余数
- ** 幂指数 10**2 即10的2次方
- ++
- --
- . 连接字符串,"this is a "."string" = "this is a string"
数值关系运算符
- > 大于
- >= 大于等于
- < 小于
- <= 小于等于
- == 等于
- != 不等于
- <=> 大于:1;等于:0;小于:-1;
字符串关系运算符
- gt 大于
- ge 大于等于
- lt 小于
- le 小于等于
- eq 等于
- ne 不等于
- cmp 大于:1;等于:0;小于:-1;
逻辑运算符
- &&或and 与 全真则真
- || 或or 或 全假则假
- !或not 非 真假假真
- xor 异或 同假异真
位运算
- & 按位与
- | 按位或
- ~ 按位非
- ^ 按位异或
- << 左移位
- >> 右移位
特殊运算符
- .. 区间表示 如 1..3 等价于 1,2,3
- ?: 三目操作符,满足?前条件执行:前内容,不满足执行:后内容
文件数据运算符
- -r $file 如果$file是可读取的话,返回1的值
- -w $file 如果$file是可写入的话,返回1的值
- -x $file 如果$file是可执行的话,返回1的值
- -e $file 如果$file存在的话,返回1的值
- -o $file 如果$file是被执行才所拥有的话,返回1的值
- -s $file 返回$file的文件大小(bytes)
- -f $file 如果$file是正常文件的话,返回1的值
- -T $file 如果$file是文本文件的话,返回1的值
- -B $file 如果$file是Binary文件的话,返回1的值
- -M $file 返回$file文件最后一次更改时间到现在的日期数
特别注意:
1.Perl不刻意强调变量的初始化,如果一个变量没有初始化就进行运算,则会取其默认值:数字为0,字符串为""空字符串。
2.Perl中字符串可以和数值进行运算,如果字符串看上去不像个数字,则会用0代替
3.千万注意数值型关系运算符和字符串型关系运算符的区别。数字比较时用数值关系运算符,字符串比较时用字符串关系运算符。
如果在字符串比较时使用了数值关系运算符,如: $name="Jack";$name == "Tom";运算的结果总会是1,原因参见 2。
(到时候你从数据库里取出几千万的数据别怪我没说啊,等着被项目经理打死吧)
4.移位操作中<<与操作系统位数有关,如64位操作系统中 1<<64 =1,每移动64位为一个循环。
5.Perl中认为0,空字符串,未定义值undef为false,其他均为true。
6.字符串关系运算中,对两边的字符串从左到右进行按位比较,比较依据Ascii码表顺序
7.&& 和and并不完全相同,&&要早于and执行
8.逻辑运算符并不是返回0或1,而是返回判断结束前处理条件的结果。如 1&&2 返回2 ,0&&2返回0,1||2返回1。
Perl常用函数
printf:输出函数,用法同c语言中一样;
length:输出包含内容的长度:如length("asdf")=4;
chop:去除最后一个字符:chop("abcd")="abc";
chomp:去除尾部的回车换行:chomp("abcd\n")="abcd";
substr($string,m,n):给定字符串,从地m位开始截取n位长度:substr("Hello",2,3)="llo",计数从0开始,n可省略,即至尾部
Perl入门(一)Perl的基本类型及运算符的更多相关文章
- Perl入门(七) Perl脚本的调试
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/sunshoupo211/article/details/32711165 编程中错误不可避免.调试可 ...
- Swift入门(四)——可选类型(Optionals)与断言(Assert)
可选类型是什么? 首先看一个问题,Swift中String类型的变量有一个叫做toInt的方法,能够把String类型变量转换为Int类型变量. var stringValue = "5&q ...
- [Perl系列—] 2. Perl 中的引用使用方法
Perl 中的引用,为什么要使用引用? 对于熟悉C语言的开发人员来说, 指针这个概念一定不陌生. Perl 的引用就是指针,能够指向变量.数组.哈希表甚至子程序. Perl5中的两种Perl引用类型为 ...
- 《挑战30天C++入门极限》新手入门:C++中布尔类型
新手入门:C++中布尔类型 布尔类型对象可以被赋予文字值true或者false,所对应的关系就是真与假的概念. 我们通常使用的方法是利用他来判断条件的真与假,例如下面的代码: #include ...
- PHP入门之类型与运算符(一)
前言 PHP对于大部分人来说,是比较容易入门的.笔者也是刚学习不久,所以就把自己学习的基础知识进行总结和整理.第一部分是类型与运算符.如果你想学习PHP,可以参考PHP学习手册学习,任何一本教学资料也 ...
- PHP入门之类型与运算符
前言 PHP对于大部分人来说,是比较容易入门的.笔者也是刚学习不久,所以就把自己学习的基础知识进行总结和整理.第一部分是类型与运算符.如果你想学习PHP,可以参考PHP学习手册学习,任何一本教学资料也 ...
- 027 01 Android 零基础入门 01 Java基础语法 03 Java运算符 07 逻辑“与”运算符
027 01 Android 零基础入门 01 Java基础语法 03 Java运算符 07 逻辑"与"运算符 本文知识点:Java中的逻辑"与"运算符 逻辑运 ...
- java 基础知识二 基本类型与运算符
java 基础知识二 基本类型与运算符 1.标识符 定义:为类.方法.变量起的名称 由大小写字母.数字.下划线(_)和美元符号($)组成,同时不能以数字开头 2.关键字 java语言保留特殊含义或者 ...
- c语言的类型、运算符与表达式
title: 2017-10-17c语言的类型.运算符与表达式 tags: c程序设计语言 grammar_cjkRuby: true --- 1.1 数据类型 char 字符型,一个字节 int 整 ...
- 转战JS(1) 初探与变量类型、运算符、常用函数与转换
转战JS(1)初探与变量类型.运算符.常用函数与转换 做为一名.NET后台开发人员,正考滤向Web前端开发转型,之前也写过一代前端代码,可是当再回头看JS,并有转向它的意愿的时候,突然发现:原来JS不 ...
随机推荐
- Python数据分析:pandas玩转Excel (二)
1 对Excel文件的操作 方法一: 使用xlrd库或者xlwt库进行对excel表格的操作读与写: 方法二: pandas库同样支持excel的读写操作:且更加简便. 2 pd.read_excel ...
- meavn项目由打包方式jar改为war报Cannot install Dynamic Web Module 2.5 facet. It is incompatibile with already installed facets: Utility Module. Please modify project configuration.处理方式
找到 \项目名\.setting\文件夹下的 org.eclipse.wst.common.project.facet.core.xml xml文件. 添加或修改 <installed ...
- jQuery-简单理解
1.概念 jQuery是js的一个类库,主要封装的是js中DOM操作部分,使用和原生js一样 2.代码展示 HTML部分 封装原理 test测试 JS部分 //声明对象 var bjsxt = {}; ...
- “造轮运动”之 ORM框架系列(一)~谈谈我在实际业务中的增删改查
想想毕业已经快一年了,也就是大约两年以前,怀着满腔的热血正式跨入程序员的世界,那时候的自己想象着所热爱的技术生涯会是多么的丰富多彩,每天可以与大佬们坐在一起讨论解决各种牛逼的技术问题,喝着咖啡,翘着二 ...
- Java实现蓝桥杯模拟空地长草
问题描述 小明有一块空地,他将这块空地划分为 n 行 m 列的小块,每行和每列的长度都为 1. 小明选了其中的一些小块空地,种上了草,其他小块仍然保持是空地. 这些草长得很快,每个月,草都会向外长出一 ...
- Java实现 LeetCode 17 电话号码的字母组合
17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23& ...
- java实现三进制转十进制
** 三进制转十进制** 不同进制的数值间的转换是软件开发中很可能 会遇到的常规问题.下面的代码演示了如何把键盘输入的3 进制数字转换为十进制.试完善之. BufferedReader br = ne ...
- java实现第二届蓝桥杯最小公倍数(c++)
最小公倍数. 为什么1小时有60分钟,而不是100分钟呢?这是历史上的习惯导致. 但也并非纯粹的偶然:60是个优秀的数字,它的因子比较多. 事实上,它是1至6的每个数字的倍数.即1,2,3,4,5,6 ...
- java实现第七届蓝桥杯寒假作业
题目6.寒假作业 寒假作业 现在小学的数学题目也不是那么好玩的. 看看这个寒假作业: □ + □ = □ □ - □ = □ □ × □ = □ □ ÷ □ = □ (如果显示不出来,可以参见[图1. ...
- Volcano火山:容器与批量计算的碰撞
[摘要] Volcano是基于Kubernetes构建的一个通用批量计算系统,它弥补了Kubernetes在“高性能应用”方面的不足,支持TensorFlow.Spark.MindSpore等多个领域 ...