说说Perl(5)让你不爽的地方
时间:2010-10-27
来源:互联网
每门语言都有弱点,Perl肯定也有一些不好之处。
比如,最让俺不爽的是Perl的无类型。。
sub x{ return 1 }
返回值既可看作字符又可看作数字,这在很多场合并不严谨。。
黑色阳光的那篇帖子也无疑表达了Perl的某些弱项(语法黑洞)。
大家还有其他想法,欢迎补充和探讨~~

作者: 兰花仙子 发布时间: 2010-10-27
没有象delphi那样强大,方便开发的GUI,使得用来写桌面应用程序很困难
作者: iamlimeng 发布时间: 2010-10-27

作者: zhlong8 发布时间: 2010-10-27
把字符串"1" 转成 数字1的方法是:
my $n = "1";
$n + 0;
- my $n = "1";
- my @ar = qw(1.0 2.0 3.0 4.0 5.0);
- if ($n + 0 ~~ @ar)
- {
- warn "yes";
- }
- else
- {
- warn "no";
- }
作者: 黑色阳光_cu 发布时间: 2010-10-27

作者: zhlong8 发布时间: 2010-10-27
$1, $2, $3 ... $n 是正则的分组
$0却是执行程序的名字
而$-[0] $+[0]却又是$&的偏移
作者: 黑色阳光_cu 发布时间: 2010-10-27
正则匹配在LIST上下文的返回值的不一致性:
分 有没分组 和 有没g修饰,组合一共4种情况:
1) 没分组,没g修饰
my @ar = "abcdefg" =~ /../;
$ar[0]为匹配成功次数1
;;
2) 没分组,有g修饰
my @ar = "abcdefg" =~ /../g;
@ar却为每次匹配的$&
;;
3) 有分组,没g修饰
my @ar = "abcdefg" =~ /(.)(.)/;
@ar为一次分组內容
;;
4) 有分组,有g修饰
my @ar = "abcdefg" =~ /(.)(.)/g;
@ar为多次分组內容
主要是没分组,没g修饰的时候,返回一次$&才合理,而不是返回1
作者: 黑色阳光_cu 发布时间: 2010-10-27
- while (my $line = <FILE>)
do while中,last要这样子用:
- {
- do
- {
- last;
- } while (1);
- }
- my $n = 10;
- do
- {{
- next if ($n % 2);
- warn $n;
- }} while ($n-- > 0);
- warn prototype("func"); # 这个检查发生在运行时,所以可以打印$ $
- warn func(5); # 编译时没看到prototype
-
- sub func($ $)
- {
- return $_[0] + $_[1];
- }
-
- warn &func(10); # &方式调用不会被检查prototype
- my $ref = \&func;
- warn $ref->(15); # ->方式不会被检查prototype
- warn &$ref(20); # &方式调用不会被检查prototype
函数返回值:
对于很多Perl內置函数来说,真是返回字符串"1",假是返回字符串"",个人认为应该返回数字1和undef更合理。更特别的,Perl里一些对系统API封装的函数,比如fcntl,由于API返回0是代表成功,所以Perl封装的函数是返回一个字符串"0 but true",这样子感觉很山寨,个人认为这里的0应该解释为出错代号,出错代号0代表着成功,用户既然用了某个函数,就有责任知道函数调用返回值的准确含义,而不是简单的靠真假来判断是否调用成功。
作者: 黑色阳光_cu 发布时间: 2010-10-27
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28