perl: 数据类型 和 运算符

Perl数据类型和运算符:

-----------------------

布尔类型bool:

数字:0为假,其它为真。

字符串:空字符串为假(包括‘0’),其它非空为真。

--------------------------

Perl的标量scaler:

1.数字:整数、浮点数

2.字符串:单引号、双引号

浮点数直接量:

可以用小数点表示也可以用指数表示.

整数直接量:

在perl里整数其实都是转换成浮点数运算的.

有十进制、二进制(0b开头)、八进制(0开头)、十六进制(0x开头)。

数字的操作符:

+ - * /

%  取模(求余)

** 乘幂

数值相关函数:

abs     VALUE:  返回绝对值

rand   :     返回[0,1)之间的随机分数.

rand    EXPR: 返回[0,expr)之间的随机分数.

srand 
 EXPR: 为rand设置随机数种子.在相同的随机数种子下rand结果相同.

sqrt    EXPR: 返回正数的平方根.

int

hex

oct

exp

log

atan2

sin

cos

单引号字符串中的值除了反斜线和单引号都是原样输出。

‘\\’    :输出下划线

‘\’’    :输出单引号

‘\n’    :输出\n,而不是换行。

双引号字符串中的标量变量内插:

“$var”    :  标量变量内插

“@arr”:数组内插

“@arr[index]” :数组元素内插。

“%hash{“key”}”: 哈希元素内插

“\n”:换行

字符串的操作符:

.   连接操作

x   重复操作

标量相关函数:

chomp    VARIABLE

去掉结尾的\n。

chop    VARIABLE

reverse    LIST

翻转数字或字符串。

index    STR,SUBSTR[,POSITION]

在str中从position往后开始找substr,返回从0开始的首次出现的位置.否则返回-1.

rindex   
STR,SUBSTR[,POSITION]

在str中找position之前的substr,返回从0开始的最后一次出现的位置,否则返回-1。

substr    EXPR,OFFSET[,LENGTH[,REPLACEMENT]]

返回从0开始的expr字符串中从offset开始往后的length长度的子串。

如果给出replacement就用它替换选中的子串。

省略length就是到expr结尾。

offset为-1表示expr的最后一个字符,

substr($string, offset,length) = “newstring”;    #改变原来字符串中选中部分的值。

sprintf    FORMAT, LIST

返回格式化后的结果,可以保存到一个字符串中使用。

参数和printf一样。

length    EXPR: 返回字符串长度.

chr    EXPR:将数字变成字符.

ord    EXPR:将字符变成数字.

hex

oct

lc

lcfirst

uc

ucfirst

crypt

pack

"tr///","q//", "qq//","y///"

----------------------------

标量变量:

Perl的变量也叫标量变量,就是存储标量的变量.使用$开头。

Perl的变量对大小写敏感,变量以字母下划线数字组成,但是不能用数字开头.

小写字母表示普通变量,大写字母用来表示特殊变量.

使用首字母大写或下划线来赋予变量具体含义.

变量最好用{}括起来。

默认情况下perl中的所有变量都是全局变量。

“$var”   : 双引号字符串中的标量变量会被当前的值替换掉。

perl的标量的操作符都支持复合赋值:

+/-/*//=

%=

**=

.=

x=

综合函数:

undef函数:

还没有赋值就使用的标量变量就是undef的,数字默认为0,字符串默认为空字符串。

$var = undef;     #创建一个undef值。

defined函数:

如果$val是undef值函数返回假,否则返回真。

formline

lock

prototype

reset

scalar

------------------------------------

perl的列表list:

列表就是标量的有序集合,列表是标量。

列表中的元素可以是标量、列表和表达式。

列表中使用的数组其实是转换成了列表。

列表中使用的变量其实是转换成了标量。

列表除了用小括号()来做定界符还可以使用任何标点符号。

qw!/#/$/%str1   str2 …!/#/$/%

qw[/{/<str1   str2  …]/}/>

(var1, var2 …) :就是小括号中用逗号隔开的一系列值。

(var1..val2):使用范围操作符..每次加1,var1要小于var2。

():空列表

(var1..var2):var1大于var2就是空列表。

(list)[n] :  列表的切片

(list)[m,n,x,…] : 同时获取多个元素,切片的下标可以使任意的。

列表的值可以赋给变量:

($var1, $var2 …) = (val1,val2 …);

如果列表的值多了就忽略,如果变量的值多了就使undef值。

互换两个变量的值:

($a, $b) = ($b, $a);

($arr[m], $arr[n]) =($arr[n], $arr[m]);

qw//:

单词列表

qw(str1   str2  …):qw列表,perl将其解释为多个单引号内的字符串,不能再其中使用\n或标量变量,其中的空白字符会被抛弃。

reverse:

@arr= reverse(list);    #将list中的元素反转然后返回给arr,list不变。

@arr= reverse list;    #同上

sort:

@sorted= sort(list);    #根据ACSII对list排序,将结果返回给sorted,list不变。

@sorted= sort    list;

join    EXPR,LIST: 用expr分隔list的元素.

grep   
BLOCK    LIST

EXPR,     LIST

从list中根据block或expr的规则选出符合条件的值。

map  BLOCK    LIST

EXPR,    LIST

 

unpack   
TEMPLATE[,EXPR]

------------------------------

perl的数组array:

数组是存储列表的变量,数组是变量。

数组长度没有上限的,没有定义的数组元素就是undef值。

数组元素通过下标来访问和赋值的。

最后一个数组元素的索引也可以是-1。

$arr[index] = val;

print   ”$arr[index]”;

$#arr:数组最后一个元素的索引值(下标),数组为-1。

$arr[$#arr] == $arr[-1]

@arr : 用@来引用整个数组

@arr1 = @arr2;    #其实是列表的复制,只是用数组的形式而已。

@arr = ();    #清空数组

print    “@arr\n”;   #可以直接打印整个数组

print    @arr;   #打印整个数组,没有空格

@arrays[n] :   数组切片

@arrays[m,n,…] :数组切片

“@arr” : 双引号中的数组会被数组的当前前值替换掉。

“@arr[index]” : 双引号中的数组元素会被元素当前值替换掉。

双引号中的@name如果不是表示数组需要写成\@name。

数组相关函数:

pop

$var= pop(@arr);    #把数组arr中的最后一个元素取走并返回。

pop    @arr;         #同上

如果数组是空的仅仅返回undef。

push:

push(@arr, val);    #添加val到数组的尾端

push  @arr,list;    #同上

shift

$var = shift(@arr);    #把数组arr中的第一个元素取走,并返回。

shift  @arr;    #同上

如果数组是空的返回undef。

unshift:

unshift(@arr, val);    #在数组开头放入val。

unshift   @arr, list    #同上。

keys

values

each

splice

----------------------------------

perl的哈希类型hash:

哈希由无序的键值对组成,键必须是唯一的字符串(或结果为字符串的表达式),值可以是任意类型的任意值。如果对已存在的哈希元素赋值就会覆盖之前的值。

通过键来检索哈希或者给哈希赋值:

$hash{$key}

$hash{“keystring”} = “value”;

%hash 用来表示整个哈希。

@arr = %hash;    #哈希松绑,将哈希变成键值对的列表。

%hash = @arr/list;    #数组或列表会变成键值对。

%newhash = %hash;    #复制哈希

%inverse_hash = reverse   %hash;   #将键值对位置互换,键变成了值(值唯一才有用)。

print    %hash;   #打印的是没有空格的键值对,哈希不能内插。

($hash{“key1”}, …)  :  哈希切片

@hash{ qw / key1 …/ }   : 哈希切片

常用的hash写法(使用胖箭头):

my %hashname = (

“str1” => “val1”,

“str2” => “val2”,

);

%ENV哈希用来存放环境变量。

Print “PATH =$ENV{PATH}\n”;    #打印path环境变量

Print “CHARACTER =$ENV{CHARACTER}\n”;    #打印在程序外设置的环境变量

哈希相关函数:

keys HASH:

[email protected] = keys %hash;    #获取哈希的键列表。

my$count = keys %hash;    #获取键值对个数。

values HASH:

[email protected] = values %hash;    #获取哈希的值列表。

each HASH:

($key,$value) = each    %hash;    #遍历哈希键值对。

while(($key, $value) = each %hash) {

print “$key => $value\n”;

}

exists  expr:

exists$hash{“key”};      #检查中是否有某个键。值是undef的键也是存在的。

if(exists $hash{“key}) {

print “The key exist in the hash.”;

}

delete expr:

delete    $hash{“key”};    #从hash中删除指定的键和这个键对应的值,删除之后就不存在了。

-------------------------------------

perl中的上下文:

在标量上下文中使用产生列表的表达式:

$num = @arr会自动转化为数组的个数。

sort在标量上下文返回undef值。

reverse在标量上下文中先将所有字符串连在一起然后再反序。

在列表上下文中使用产生标量的表达式:

自动产生一个仅含一个标量值得列表即可。

从列表上下文切换到标量上下文使用伪函数scalar:

scalar(@arr);    #此处不是数组而是数组元素个数。

scalar    @arr;   #同上

列表上下文中的<STDIN>:

在标量上下文中返回数据的下一行,也就是输入回车返回。

在列表上下文中返回所有行,直到文件结尾EOF或ctrl+d,每一行都是列表中的元素。

chomp(@lines =<STDIN>);    #去掉每一行结尾的换行符。

--------------------------------------------

Perl操作符的优先级和结合性:

():括号操作符

->: 方法调用

++      --:自增,自减,

**:数值乘幂,右结合

\        !(逻辑非)     ~(按位取反)    +(正)   -(负)
: 单目操作符,右结合

=~      !~ :绑定操作符

*   /  %   x : 数值乘、除、求余,字符串重复

+   -  .  :数值加、减,字符串连接

<<   >>  : 按位左移/右移

<   <=  >   >=   lt  le   gt   ge:数值比较,字符串比较

==    !=   eq   ne   <=>  cmp   : 数值相等、不等,字符串相等、不等

& :按位与

|   ^ :按位或、异或

&& : 逻辑与

|| :逻辑或

//:逻辑否定

?::三目操作符,右结合

=   (…)= :赋值和复合赋值,右结合

,=>  : 分隔符

not :非,右结合

and : 与

or   xor  :或、异或

自增自减++/--:

$count{$_}++   foreach  @arr;   #可以用来统计数组中字符串出现的次数。

foreach (@arr) {

print “$_\n”

if $seen{$_}++;       #可以查看arr数组中的重复出现的单词。

}

三目操作符?::

condition1 ? expression-true: expression-false

逻辑运算:

!expr;   #逻辑非

expr1  && expr2;     #如果expr1为真才计算expr2,否则直接跳过expr2。

expr1  || expr2;    #如果expr1为假才计算expr2,否则直接跳过expr2。

my  $val = $arg1 // $arg2;   #逻辑否定,如果arg1是undef那么val=arg2,否则val=arg1。

定长数据或记录的内建函数:

"pack","read", "syscall", "sysread","sysseek", "syswrite",

"unpack","vec"

时间: 2024-12-14 17:43:36

perl: 数据类型 和 运算符的相关文章

【Java面向对象基础(一)】数据类型与运算符

[喵"的Android之路][基础篇(一)][Java面向对象基础]数据类型与运算符 1.数据类型介绍 在Java中,数据类型分为两种:基本数据类型和引用类型. 基本数据类型共8种,见下表: 基本数据类型 字节数 二进制位数 最小值 最大值 默认值 byte 1 8-bit -2^7 +2^7 - 1 0 short 2 16-bit -2^15 +2^15 - 1 0 int 4 32-bit -2^31 +2^31 - 1 0 long 8 64-bit -2^63 +2^63 - 1 0

Java第二章总结(数据类型,运算符)

一.高级语言构成 ①数据类型 ②变量 ③运算符,表达式,语句 ④标识符(系统预定义和用户自定义) ⑤语法规则 二.命名规范 1.常量字母全部大写 2.类名首字母大写 3.项目名小写 4.变量名小写,后面有单词的第一个大写 5.见名知意 6.驼峰命名法 三.数据类型 8种基本数据类型和引用数据类型 引用数据类型比如String 常量修饰符final,比如final double PI = 3.14; 基本如下: 四.数据自动类型转换 数字默认int,小数默认double float a = 3.2

9.12/ css3拓展、js基础语法、程序基本知识、数据类型、运算符表达方式、语句知识点

css3拓展: <display:none>  将某个元素隐藏       <visibility:hidden>  也是将某个元素隐藏 <display:block>  显示                     <visibility:visible>  显示 <display>与<visibility>的区别在于:<display>隐藏后不占位置   <visibility>隐藏后位置还在 当两个<

JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)

Java基础语法(变量.常量.数据类型.运算符与数据类型转换) 1.变量 Java中,用户可以通过指定数据类型和标识符来声明变量,其基本语法为: DataType identifier; 或 DataType identifier = value; 其中,DataType是变量类型,如int/string/char/double/boolean等:identifier是变量名称,即标识符:value就是声明变量的值. 注: a.标识符由数字0-9.大小写字母.下划线.美元符号.人民币符号以及所有

java中的输入流(Scanner),数据类型,运算符,switch,数组的用法

//java中创建包用package相当于C#的命名空间namespace,java中导入包用import相当于C#中引入命名空间usingimport java.util.*;//导入包,*代表导入java.util包下面的所有类public class Test { /***********Scanner的使用************/// public static void main(String[] args) {//  Scanner input = new Scanner(Syst

数据类型与运算符

 数据类型与运算符 1.变量 重点:01.变量就是一块空间(用旅馆的例子做类比) 02.变量三要素:数据类型 变量名 变量值 03.由于电脑记录位置的时候不是很好找(0x0156892321)变量名(num). 2.数据类型 int char String double Boolean :有且只有两个值:True或者False char类型只能存储单个字符,如果你想存储一个空字符,要打一个空格. 3.命名规范 1.包名所有字母均小写. 2.类名首字母大写 3.变量首字母小写,后续有含义的单词首字

3、C语言之数据类型、运算符与表达式

C语言之数据类型.运算符与表达式 1.C的数据类型 数据类型决定: (1)数据占内存的字节数 (2)数据取值范围 (3)可以进行的操作 2.常量与变量 常量和符号常量 在程序运行过程中,其值不能被改变的量称为常量 常量区分为不同类型: 整型 100 ,125,-1000 实型:3.14, 0.23 字符型: 'a', 'b' 字符串型:"a", "adfdg", "1233" 用某种符号来代表某个常量,称这个符号为符号常量 #define PRI

Java基础知识(一)——数据类型、运算符、结构

Java基础知识--数据类型.运算符.结构 在Java语言(强类型语言:先声明,后使用.只能接受与之类型匹配的值)里,除了8个基本数据类型之外,一切都是对象. 对象时Java程序的核心,所以Java里的对象具有唯一性,每个对象都有标识来引用它,如果某个对象失去了标识,这个对象将变为垃圾. Java语言不允许直接访问对象,而是通过对象的引用来操作对象. 对象具有状态,一个对象用数据值来描述他的状态.Java通过定义成员变量来描述对象的状态. 对象还有操作,这些操作可以改变对象的状态.对象的操作也被

C语言:数据类型、运算符、表达式

.:.:第二章:数据类型.运算符.表达式:.:. 第二章: 数据类型.运算符.表达式 C语言的数据类型 在第一课中,我们已经看到程序中使用的各种变量都应预先加以说明,即先说明,后使用.对变量的说明可以包括三个方面:·数据类型·存储类型·作用域 在本课中,我们只介绍数据类型说明.其它说明在以后各章中陆续介绍.所谓数据类型是按被说明量的性质,表示形式,占据存储空间的多少,构造特点来划分的.在C语言中,数据类型可分为:基本数据类型,构造数据类型,指针类型,空类型四大类. 1.基本数据类型 基本数据类型