标量数据
标量:数字、字符。可以存储在标量变量中也可以从文件和设备中读取。
数字:所有数字内部格式相同——双精度浮点数。
浮点数直接量:程序员在程序中直接键入的数字。
整数直接量: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"; }