Codejie's C++ Space

Using C++

Perl: So terrible


    这两天在看Perl,发现Perl的精髓真的跟其强调的--“There's More Than One Way To Do It. ”;但问题是太混乱了。。。
    研究了下面简单脚本,我整个人都震惊了。。。

sub T {
    my $n = @_;
    print $n;
    print @_;
    print $#_;
}

T(123);

    第一个print打印了$n, 显示了参数个数;第二个print打印@_,按照习惯思维,应该跟$n是一样的,No,No,No,它显示了@_的内容;而第三个print打印的是$_数组的最大边界值。。。反正三种方法都能得到参数个数。。。
    更崩溃的是下面这句,也能检测参数个数。。。

print (@_ == 3);

    都说Perl的发明者Larry Wall获得过两次IOCCC,看来这个,我一点不奇怪了--他Y是故意把Perl搞成这样的。。。

posted on 2012-02-29 11:20 codejie 阅读(1495) 评论(3)  编辑 收藏 引用 所属分类: 随笔而已心情痕迹

评论

# re: Perl: So terrible [未登录] 2012-02-29 12:54 烟圈

他肯定是故意的。。。  回复  更多评论   

# re: Perl: So terrible 2014-03-20 23:31 gaofeng

要不然怎么说perl是语言学家发明的语言呢。根据不同context,数组@_表示出不同的语言,print @_就当数组用,@_==3就当标量用(数组的标量自然就是他的长度了)。用习惯了其实也好的,就像自然语言中文,英语一样。   回复  更多评论   

# re: Perl: So terrible 2014-03-21 09:23 codejie

@gaofeng
咋说呢...俺已学乖远离Perl了...  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


公告

Using C++

导航

统计

留言簿(73)

随笔分类(513)

积分与排名

最新评论

阅读排行榜

评论排行榜