Perl_标量

scalar

标量:是以$开头的单个数字或者字符串;区分大小写;由字母或下划线开头,后接多个字母,数字或下划线

三个不同变量

$name;
$NAME;
$Name;
$_12 = 5;
$a_very_long_name = "string";
print "$_12\n$a_very_long_name\n";

给标量取个好名字:标量名称应该能说明它的用途和意义

Perl变量命名最好全部小写,尽量不要全部的大写,易与表示特殊意义的变量冲突

数字型的标量

按“双精度浮点数”的要求来保存数字并进行运算

浮点数直接量:指某个数字在Perl源代码中的写法
1.25
255.000
255.0
7.25e45
-6.5e24
-12e-24
-1.2E-23

整数直接量

0
2001
-40
255
61298040283768
61_298_040_283_768

非十进制的整数直接量(前置零)

八进制(o);十六进制(0x);二进制(0b)

o377 #八进制的377 = 十进制255
0xff #十六进制的FF = 十进制255
0b1111111 #十进制255

非十进制直接量的长度超过4个字符时,读起来会有些困难;因此Perl同样容许在这些直接两种使用下划线分开读

0x1377_0B77
0x50_65_72_7C

前置零:只对直接量有效;不能用于字符串到数字的自动转换

可以使用oct()和hex()两个内置函数,把看起来像八进制或十六进制的直接量转换成数字;其中oct()可以接受以0b开头的字符串

字符串类型

最短的字符串不包含任何字符---空字符串;最长的字符串是没有限制的

字符串通常是由可输出的字母,数字及标点符号组成,其范围介于ASCII编码的32到126之间

因为字符串能够包含任何字符,所以可用它来创建、扫描或操控二进制数据,这个功能是其他语言工具所不能的

use utf8;  #在源代码中使用Unicode书写直接量
补充:单引号中要表示反斜线字符本身,需要在这个反斜线字符前加一个反斜线字符表示转义
print 'hello\\world';  #hello\world

赋值

$number = 150;  #数字赋值
$name = "Jody Savage";   #字符串赋值
$today = localtime();    #函数localTime输出内容以字符串形式赋值

花括号

如果一个标量位于花括号({})之间,其后面出现的字符串将不会追加到标量后面

$var = "net";
print "${var}work\n";    #network

赋值与输出

$num = 5;
$friend = "John Smith";
$money = 125.75;
$now = localtime();
$month = "Jan";
print "$num\n";
print "$friend\n";
print "I need \$$money.\n";
print qq/$friend gave me \$$money.\n/;
print qq/The time is $now\n/;
print "The month is ${month}uary.\n";
print "The month is $month"."uary.\n";   #(.)操作符将不同字符串链接到一起

defined函数:检查变量值的有效性

如果一个标量既不是有效的字符串,又不是有效的数字值的话,称其为未定义的

如果变量中含有值,返回值为1,否则为null

可用于检查数组,子例程和null字符串的有效性

$name = "Tommy";
print "ok\n" if defined $name;   #ok

undef函数:解除已经定义的变量

释放那些分配给变量的内存空间;该函数返回未定义的值,并释放与数组或子例程相关联的内存空间

undef $name;

$_标量型变量

用作默认的模式空格符,并负责保有当前行号

一旦为其赋予了某个数值,如chomp、split和print之类的函数就会把新的$_值当做输入参数

$_ = "Donald Duck";
print;    #Donald Duck

借助代码点创建字符

有时候我们需要输入键盘上没有的那些字符。取得这些字符的方法需要看用的是什么系统的输入法或是哪款文本编译器

与其费力寻找字型输入,不如直接键入这些字符的代码点(code point),再通过chr()函数转换成对应字符

$alef = chr(0x03C9);
$omega = chr(0x03C9);
$alpha = chr(hex('03B1'))
print $alef,"\n";
####通过ord()函数把字符串转换为代码点
$code_point = ord('? ');
print $code_point;
print "\x{2668}";  #Unicode中名为HOT SPRINGS的字符的代码点
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,265评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,078评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,852评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,408评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,445评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,772评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,921评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,688评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,130评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,467评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,617评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,276评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,882评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,740评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,967评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,315评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,486评论 2 348