Learning anything, Learn its culture
Perl
Perl 中的 $ 与 @
在 Perl 中, 变量用 $ 开头, 而数组用 @ 开头, 为什么呢?
Larry 宣称他之所以选择 $ 与 @ 这两个符号, 是因为 $calar 看起来像 scalar (标量), 而 @rray 则像 array (数组). (p.54)
Perl 中的 钻石操作符 <>
这个形象的名字是怎么由来的呢?
钻石操作符是 Larry 得女儿 Heidi 命名的, 某天当 Randal 拿着他新写的 Perl 培训教材去 Larry 家给他看的时候, 这个操作符还没有一个角得出的名字, Larry 也想不出来, 八岁的 Heidi 灵机一动, 说 "它像钻石", 于是遍有了这个名字, 谢谢 Heidi! (p.85)
哈希用 {} 引出索引
为什么要用花括号, 而不用方括号呢? Larry 的解释是: 因为哈希的访问方法要比常规的数组访问方法酷一些, 所以也自然需要使用更花哨的括号. (p.109)
名列新闻组中常见问题榜首的是什么?
批量改名不仅是历史常见问题, 也是这些新闻组目前最常见的问题, 同时还是常见问题集名列榜首, 并最早被解答的问题. 世界真小.
# 根据 Perl 语言入门第五版 (p.210) 有删改 by walfud 2011/7/10
my$filter="exe" ;
my$newFilter="exe_" ;
foreach$name (glob"*.".$filter) {
my$newName=$name ;
$newName=~ s/\.$filter$/\.$newFilter/ ;
if (-e $newName) {
warn"$newName has been exists!"."\n" ;
} else {
rename$name,$newName
or warn"rename $name to $newName failed: $!"."\n" ;
}
}
飞碟操作符( <=> )名称的由来
这么称呼是因为 《星际大战》 里面的某种钛战机就是这样. 起码我们觉得很像. (p.228)
.out Model
BBS 段
BBS 段这个名字是 "Block Started by symbol (由符号开始的快)" 的缩写, 它是旧式 IBM 704 汇编程序的一个伪指令, UNIX 借用了这个名字, 至今仍然沿用. 有些人喜欢把它记作 "Better Save Space (更有效地节省空间)". 由于 BBS 段只保存没有值的变量, 所以事实上它并不需要保存这些变量的映像. 运行时所需要的 BBS 段的大小记录在目标文件中, 但 BBS 段 (不像其他段) 并不占据目标文件的任何空间.
网络编程
为什么常用 inet_aton 函数代替 inet_addr 函数
inet_addr 将字符串形式的 IP 地址转换成 32 位网络字节序的二进制 IP 地址. 所有 2^32 (0.0.0.0 ~ 255.255.255.255) 都被认为是可能 IP 地址. 然而 inet_addr 以 INADDR_NONE 作为出错的返回值, 通常 INADDR_NONE 为一个 32 位全 1 的值, 对应点分十进制的 255.255.255.255, 因此这个 IP 地址是不能用 inet_addr 处理的. 因此, 人们 常用 inet_aton 函数代替 inet_addr 函数.in_addr_t inet_addr(constchar*str) ;
int inet_aton(constchar*str, struct in_addr *numstr) ;
C++ 中 std::string 的 size() 和 length()
这里出现两个成员函数依不同的设计原则执行了相同的操作.
- size() 是根据 STL 习惯而设的成员函数, 用来表明元素数量.
- length() 传回字符串长度, 就好像 C-strings 以 strlen() 所得结果一样.