Perl入门学习笔记——标量数据

Learning Perl 

第二章 标量数据
标量是Perl里最简单的一种数据类型,要么是数字,要么是字符组成的序列。对于Perl来说,这二者能够在内部转换。
能够用操做符对标量进行操做,产生的结果也是标量。
在Perl内部,老是按照双精度浮点数的要求来保存数字并进行运算的。Perl并不存在整型变量。

浮点数直接量
直接量值某个数字在Perl源代码中的写法。
小数点和前置的正负号都是可选的,数字前面加上用"e"表示的指数表示法。

非十进制的整数直接量
Perl容许十进制之外的其余进制来表示数字。八进制直接量以O开头,十六进制以0x开头,二进制变量以0b开头。
非十进制直接量多了会影响阅读。Perl容许在这些直接量中使用下划线。

字符串
字符串能够是任意字符组成,长度没有限制,由于字符串能够包含任意数据,因此能够用它来建立,扫描或操控二进制数据。
Perl彻底支持unicode,若是在源代码中使用Unicode书写直接量,要手动加上utf-8编译指令:
use utf-8;

单引号的字符串直接量
要表示反斜线自己,须要在反斜线前面加上一个反斜线字符表示转义;要表示单引号自己时,也须要在单引号前面加上反斜线字符表示转义。
双引号内的字符串直接量
能够转义许多控制字符,或者用八进制或十六进制写法表示任何字符。
双引括号的另外一特性称为变量内插

字符串操做符
字符串能够用.号链接起来,链接运算符必须显式使用。
字符串重复操做符,小写字母x。并不知足交换律。
重复次数在使用前先取整,小于1时会生成空字符串。

数字与字符串间的自动转换
Perl会根据须要,自动在数字和字符串间进行类型转换。

Perl内置警告信息
$perl -w program
#!/usr/bin/perl -w
use diagnostics;
能够显示更详细的警告信息。可是加载警告信息到内存会比较慢。
能够perl -wdiagnostics ./program应用。

标量变量
标量变量仅仅存储一个值的变量。标量变量的名称以美圆符号开头,称为魔符(sigil),标识符区分大小写。
$的意思就是取标量。
标量的赋值
双目赋值操做符
print输出结果
字符串中的标量变量内插
借助代码建立字符
chr()函数转换代码点为字符;ord()转换字符为代码点。

比较操做符
Perl比较操做符:<,<=,==,>=,!=。这些操做符返回值为true or flase。
能够用eq, ne, lt, gt, le, ge

if控制结构
if () {...;}
if () {...;} else {...;}

获取用户输入
行输入操做符<STDIN>,放在程序中但愿返回标量值的位置,Perl就会从标准输入读取一行文本。

chomp操做符
chomp()操做符做用于单个变量,去掉字符串末尾的换行符。
chomp($text = <STDIN>);
chomp()函数实际的返回值是移除的字符数。

while控制结构
$count = 0;
while ($count < 10) {
    $count += 2;
    print "count is now $count.\n"
}

count is now 2.
count is now 4.
count is now 6.
count is now 8.
count is now 10.

undef值
undef既不是数字也不是字符串,彻底是另一种类型的标量值。
$n = 1;
while ($n <= 5) {
  $count += $n;
  $n++;
}
print "the total is $count.\n";

the total is 15.

程序开始时,$count的初始值的undef,可是并不影响程序的运行。
复制某个undef变量到另外一个变量没有问题,可是print输出会引起警告信息。

defined函数
判断某个字符串是undef而不是空字符串,可使用defined函数,若是undef,则函数返回假,不然返回真。

课后习题
1. 写一个程序,计算半径为12.5时,圆的周长为多少。
2. 修改上题程序,让用户键入半径的长度。
3. 修改上题程序,用户输入半径小于0时,输出0,而不是负数。
4. 写一个程序,提示用户键入两个数字,而后输出二者的乘积。
5. 写一个程序,提示用户输入一个字符串和一个数字,而后以数字为重复次数,连续输出字符串。

答案:
1. 
$pi = 3.1415926;
$cric = 2 * $pi * 12.5;
print "The circumference of a circle of radius 12.5 is $cric.\n";
2.
$pi = 3.1415926;
print "What is the radius?\n";
chomp($radius = <STDIN>);
$cric = 2 * $pi * $radius;
print "The circumference of a circle of radius 12.5 is $cric.\n";
3.
$pi = 3.1415926;
print "What is the radius?\n";
chomp($radius = <STDIN>);
$cric = 2 * $pi * $radius;
if ($radius < 0) {
  $cric = 0;
}
print "The circumference of a circle of radius 12.5 is $cric.\n";
4.
print "Enter a string: ";
$str = <STDIN>;
print "Enter a number: ";
chomp($num = <STDIN>);
$result = $str x $num;
print "The result is \n$result.";
相关文章
相关标签/搜索