perl中的一流实体和二等实体之间有什么区别?
“一流实体”的定义是什么,它与“二类实体”有什么不同?
当使用qr //操作符创建时,“使用现代Perl中的正则表达式是正则表达式”(取自Modern Perl:该书),这意味着什么? 解决方法
正如MeNo更正确地说,一类实体是可以自由分配给变量的语言的数据类型.在Perl中,它们包括:
>标尺 那些可以驻留在符号表中.标量槽可以被各种其他类型所占据: >有符号整数 这些实体中的一些具有内置的构造函数:标量的数字和字符串,数组和散列的列表符号,匿名数组和哈希表的[]和{}代码的子关键字,IO的开放函数对象,格式内置的格式,引用的引用运算符以及正则表达式的qr {}运算符. Perl中有语言结构不是一级实体,不能分配给标量或其他一级实体.例如,包.此代码无效: my $anonymous_package = package { ... }; # XXX Shell命令有自己的内建,但是没有数据对象,所以这不行: # don't execute `yes`,but store a handle to it in reference my $shell_command = qx{yes}; 相反,这个声明不应该终止(也可能打破你的记忆). Perl中的列表是语言构造,但没有数据类型: my $listref = ($x,$y,$z); # assigns reference to $z instead Perl中的内置类型可以具有强制规则: 数字和字符串来回强制. 对象可能会超载,通过重载显示类似的强制规则. 在正则表达式引用的情况下,包含这样的引用的标量可以与正则表达式文字互换使用,例如.在模式 $string =~ /ab?c/ 如果$regex如上所述,正则表达式可以替换为$regex: my $regex = qr/ab?c/; $string =~ $regex ### no dereferencing syntax! # $string =~ /$regex/ will work too,but may invoke string overloading first (?) 例如,coderefs需要更多的biilerplate代码: sub foo {...} foo(); 与 my $foo = sub {...}; $foo->(); # two possibilities &$foo(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |