Perl的隐藏功能?
Perl中有哪些真正有用但深奥的语言特性,你实际上可以用它来做有用的工作?
指南:
隐藏功能也可在其他语言中找到隐藏功能:
(这些都来自Corion的答案)
其他隐藏功能:
运营商:
++
和一元-
运算符处理字符串 m//
运算符的特例 引用构造:
语法和名称:
模块,Pragma和命令行选项:
overload::constant
变量:
$[
变量 循环和流量控制:
for
一个单一的变量 常用表达:
G
锚 (?{})
和'(?? {})`在正则表达式中 其他特性:
DATA
块 eof
函数 dbmopen
函数 其他技巧和元答案:
也可以看看:
在使用文件句柄返回的记录(通常是行)循环时,触发器操作符可用于跳过第一次迭代,而不使用标志变量:
while(<$fh>)
{
next if 1..1; # skip first record
...
}
运行perldoc perlop
并搜索“flip-flop”以获取更多信息和示例。
Perl中有许多非显而易见的特性。
例如,你知道签名后可以有一个空格吗?
$ perl -wle 'my $x = 3; print $ x'
3
或者如果您使用符号引用,您可以提供subs数字名称?
$ perl -lwe '*4 = sub { print "yes" }; 4->()'
yes
还有一个“bool”准运算符,返回1表示真实表达式,空字符串表示为false:
$ perl -wle 'print !!4'
1
$ perl -wle 'print !!"0 but true"'
1
$ perl -wle 'print !!0'
(empty line)
其他有趣的东西: use overload
可以重载字符串文字和数字(例如使它们成为BigInts或其他)。
这些东西中的许多实际上都是在某个地方记录下来的,或者从记录的功能中按照逻辑进行记录,但是有些并不是很知名。
更新:另一个不错的。 下面提到了q{...}
引用构造,但是您是否知道可以使用字母作为分隔符?
$ perl -Mstrict -wle 'print q bJet another perl hacker.b'
Jet another perl hacker.
同样,你可以编写正则表达式:
m xabcx
# same as m/abc/
通过魔术ARGV添加对压缩文件的支持:
s{
^ # make sure to get whole filename
(
[^'] + # at least one non-quote
. # extension dot
(?: # now either suffix
gz
| Z
)
)
z # through the end
}{gzcat '$1' |}xs for @ARGV;
(引用周围$ _来处理带有shell元字符的文件名)
现在, <>
功能将解压所有以“.gz”或“.Z”结尾的@ARGV
文件:
while (<>) {
print;
}
链接地址: http://www.djcxy.com/p/42803.html