Perl有种奇妙的东西叫做“scalar”,无论是数字或字符串,只要数量为1,都称为标量。这是Perl操作的最简单数据类型。
数字
- 所有数字在内部都以双精度浮点型存储。
- 八进制以0为首,十六进制以0x为首,二进制以0b为首。
- 复杂计算时可以使用模块 Math::Complex
字符串
- 如果需要使用Unicode
use utf8;
- 用单引号括起来的字符串中,除了\和’,其他符号都表示其自身。如果想表达\用\\,而’则用\’代替;
- 双引号括字符串则能完全活用\;
- 字符串之间的连接符为 . ;
- 用符号x可以重复字符串,字符串x重复次数;
数字与字符串之间的自动转换
- Perl根据操作符应有的操作数类型来辨别数值或字符串。
"12fred34"*"3" #that's 12*3
0377 #that's octal for 255 decimal
'0377' #that's 377 decimal
"Z" . 5 * 7 #Z35
警告
use warnings;
$ perl -w my_program
use diagnostics;
$ perl -Mdiagnostics my_program
-M使只有必要时才使用诊断功能。
标量
- 以$开始,称为sigil,含义为single item 或者 scalar。
- 类似C,双目赋值操作符号可行。
print $fred; # better style than print "$fred"
print $what."s.\n";
print "${what}s.\n";
- 数字0,空字符串,字符串’0’代表false;其余为真。
$line=<STDIN>;
,每当使用STDIN,Perl会从输入读入一整行(直到换行符);$line=<STDIN>; chomp($line);
chomp($line=<STDIN>);
- 标量不赋值时,作为特殊的数据类型undef。非数值非字符,但可做0可为空字符串。
- 如何分辨undef和空字符串=>
defined($test)
,返回0则为未定义。 $test=undef; # As if it had never been touched
Comparison | Numeric | String |
---|---|---|
== | eq | |
!= | ne | |
< | lt | |
> | gt | |
<= | le | |
>= | ge |
对于python
- 拼接字符串用+;
- str,repr和反引号是将Python值转换为字符串的3种方法。函数str让字符串更易于读,而repr和反引号则把结果字符串转换为合法的Python表达式。
- input会假设用户输入的是合的Python表达式;raw_input函数则会把所有的输入当作原始数据,然后将其放入字符串中;
name = input("What's your name?") #输入为"Jack"时正常
name = raw_input("What's your name?") #输入Jack即可
- Unicode用u作为前缀:
u"Hello,world!";
- 原始字符串对\并不会特殊对待。在原始字符串中输入的每个字符都会与书写的方式保持一致。
print r'C:\Program Files\';
- 如果需要写一个非常长的字符串,需要跨行,那么使用三个引号代替普通引号。