在非严格模式下取消对Perl的引用

在Perl中,如果我有:

no strict;
@ARY = (58, 90);

为了对数组的一个元素进行操作,比如说第二个,我会写(可能是一个较大表达式的一部分):

$ARY[1]  # The most common way found in Perldoc's idioms.

但是,由于某些原因,这些方法也可以工作:

@ARY[1]
@{ARY[1]}

结果全部在同一个对象中:

print (\$ARY[1]);
print (\@ARY[1]);
print (\@{ARY[1]});

输出:

SCALAR(0x9dbcdc)
SCALAR(0x9dbcdc)
SCALAR(0x9dbcdc)

支持这种构造的语法规则是什么?使用这些结构中的每一个,或者将它们中的所有结构混合在一起,可以设计出可靠的程序代码有多远?这些表达式的互换性如何?(始终在非严格上下文中发言)。

考虑到证明如何提出这个问题,我同意将“使用严格”作为一种更好的做法,但我仍然对构建非严格表达式的一些知识感兴趣。

为了使自己对这种不安有所帮助,我来了:

  • 关于“不严格”的概念 不抱怨未声明的变量和古怪的语法。
  • 前缀取消引用的优先级高于子索引[](perldsc§“优先级注意”)。
  • 关于何时使用@代替$的说明(perldata§“ Slices”)。
  • Perl的运算符(perlop)中缺少“ []”(数组下标/切片)描述,这使我认为它不是运算符……(但必须是其他运算符。但是,什么?)。

据我了解,这些提示中没有一个使我更好地理解自己的问题。

提前致谢。

弗拉基米尔

perlfaq4的报价:

$array[1]之间有什么区别@array[1]

区别在于符号,即数组名称前面的特殊字符。$印记的意思是“只有一个项目”,而@印记的意思是“零个或多个项目”。$让你一个标,而@让你的列表。

请参阅:$ array [1]和@array [1]有什么区别?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Perl哈希给出严格的引用错误

来自分类Dev

Javascript-以非严格模式绑定“ this”

来自分类Dev

在严格模式下如何无法定义[this]?

来自分类Dev

严格模式下的间接评估呼叫

来自分类Dev

SyntaxError:在严格模式下使用const吗?

来自分类Dev

在严格的POSIX YACC模式下运行Bison

来自分类Dev

严格模式下对象的变量类型?

来自分类Dev

QUnit在严格模式下返回错误

来自分类Dev

mysql严格模式下的休眠行为

来自分类Dev

javascript严格模式下的全局变量

来自分类Dev

取消引用嵌套哈希Perl

来自分类Dev

为什么Clang让我在C ++ 03模式下通过非const临时引用?

来自分类Dev

取消引用Perl中的嵌套哈希

来自分类Dev

如何在Perl中取消引用数组?

来自分类Dev

在Perl中取消引用哈希列表

来自分类Dev

在Perl中取消引用多层哈希

来自分类Dev

数组 - 如何动态取消引用数组?(Perl)

来自分类Dev

Perl :: Cruic在残酷模式下

来自分类Dev

在严格模式下获取当前函数名称

来自分类Dev

在严格模式下,只能在顶层声明函数

来自分类Dev

SyntaxError:在Riot / TypeScript的严格模式下使用const

来自分类Dev

在严格模式下将STDIN分配给变量

来自分类Dev

PHPUnit-为什么PHPUnit似乎在严格模式下运行?

来自分类Dev

在严格模式下立即调用函数表达式

来自分类Dev

在严格模式下意外使用保留字“ let”

来自分类Dev

严格模式下的Hacklang命令行程序

来自分类Dev

严格模式下Angular应用的httpBackend显式批注

来自分类Dev

在严格模式下如何查找函数调用者

来自分类Dev

Ember 安装问题:SyntaxError:在严格模式下使用 const