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 函数

in_addr_t inet_addr(constchar*str) ;
int inet_aton(constchar*str, struct in_addr *numstr) ;
   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 函数. 

 

C++ 中 std::string 的 size()length()

这里出现两个成员函数依不同的设计原则执行了相同的操作.

  • size() 是根据 STL 习惯而设的成员函数, 用来表明元素数量.
  • length() 传回字符串长度, 就好像 C-strings 以 strlen() 所得结果一样.
posted @ 2011-06-09 19:35  walfud  阅读(249)  评论(0编辑  收藏  举报