perl将普通数值转换为科学计数法数字:
- 用sprintf转化
- my $result = sprintf("%.8e", 123456); ## $result => 1.23456000e+005
如何在perl中使用特殊名的变量名形式:
$@的变量名形式:$EVAL_ERROR
$&的变量名形式:$MATCH
- use English; ## 启用perl长变量名
- use English "-no_match_vars"; ## 启用,但是对正则表达式特殊变量不生效
内置函数ref判断引用类型技巧:
- print ref \'' , "\n"; ## SCALAR
- print ref [] , "\n"; ## ARRAY
- print ref sub {} , "\n"; ## CODE
- print ref {}, "\n"; ## HASH
- print ref \[], "\n"; ## REF
- print ref qr//, "\n"; ## Regexp
## 如果要判断一个引用是SCALAR类型,使用 ( ref($ref) eq ref \'' ),而不是( ref($ref) eq "SCALAR" ),做到尽量避免硬编码。
"<=>" "cmp"
-
'n1<=>n2' 飞船操作符用于比较数字,小于返回-1、等于返回0、大于返回1.
-
's1 cmp s2' cmp用于比较字符串,小于返回-1、等于返回0、大于返回1.
perl字符串大小写转换操作
- lc: 全部将字符串转换为小写,适用于ASCII.
- uc: 全部将字符串转换为小写,适用于ASCII
- lcfirst: 把字符串首字母转换为小写
- ucfirst: 把字符串首字母转换为大写
- fc: 完全unicode大小写转换,既不能称作大写也不能称作小写,它把字符串转换为一种大小写映射格式.(第4种大小写形式,暂时还没理解)
模块FindBin和Cwd的区别
-
FindBin获取的是脚本所在的路径
-
Cwd获取的是运行脚本时shell所在的路径
perl中的‘+’号的作用
-
由于大括号还有很多其他构造(包括代码块),有时可能必须在语句开头消除大括号的歧义,在前面加一个+或者return,这样perl就能知道这个开始大括号并不是要开始一个代码块
-
sub hashem { {@_} } ## return @_; sub hashem { +{@_} } ## return a hash_reference
-
在一元操作符和列表操作符中,如果后面的第一个token是一个左括号(忽略空白),这个操作符及用括号括起来的参数将拥有最高优先级。有这样一个规则:如果看起来像是一个函数调用,这就是一个函数调用。通过在括号前加一个一元加号+,可以让它看起来想一个非函数。
print ($a + $b) * $c; ## error print +($a + $b) * $c; ## print (($a + $b)*$c);
子例程的返回值
-
子例程的返回值是 最后计算的表达式的值。
-
或者可用显示的return返回一个值。
-
子例程在一个标量或者列表上下文中调用时,例程中最后计算的表达式也会在同一个标量或列表上下文中计算。
-
wantarray,列表上下文返回true,标量上下文返回false,voild上下文返回undefined。
-
sub func { my @array = qw(a b c d e); }
-
sub fun { my @array = qw(a b c d e); return wantarray ? @array : "myString!"; }