变量

Perl变量范围问题

所以我有一个Perl课程.它有一个sort()方法,我希望它与内置的sort()函数或多或少相同:但我做不到:因为范围.但List::Util模块使用reduce()执行此操作.我查看了List::Util模块,他们做了一些相当讨厌的事情,没有严格的“变量”来实现这一点.我试过了,但无济于事.我的理解是reduce()按照它的方式工作,因为它被导出到适当的命名空间,因此我的类不能这样做,因为该函数在另一个命名空间中非常牢固.这是正确的,还是有一些方式在我的情况下这样做?

perl中的动态变量

解决方法Perl的全局变量概念与CL中的特殊变量非常相似.您可以使用local“遮蔽”全局变量的值:输出:如果您本地化了一个值,则新值在整个动态范围内都可见,即在所有被调用的函数中都可见.一旦通过任何方式留下词法范围,旧值就会恢复.尾调用不会扩展动态范围,而是计为范围退出.请注意,全局变量具有完全限定名称.从不同的包中,你会做类似的事情这通常用于为具有功能(非OO)接口的包提供配置.重要的例子是Carp和Data::Dumper.

perl – 词汇范围的pragma

根据文档,像自动车一样的pragma是词汇范围的.这适用于所有加载使用的模块吗?据我所知,使用几乎相同:BEGIN发生在编译时,require不是词法作用域,那么autodie如何知道它的作用域呢?

后备打开文件Perl

在同一语句中屏蔽早期声明警告所以如果第一次打开成功,它会设置一个后来无法访问的$fh变量,并且第二个变量保留在未记录的未定义状态,因为它的声明实际上并未执行.你的“工作”代码也被破坏了;当我返回新声明的变量时,词法的范围实际上直到下面的语句才开始.所以你的第一个$fh是将在后面的行中访问的词法,但第二个实际上是一个全局变量.正确的代码是:

perl用双引号封装单个变量

在Perl中,有没有理由将单个变量封装在双引号中?我经常在我正在研究的程序的源代码中找到这个:据我所知,没有理由这样做.当我使用旧脚本时,我通常会删除引号,因此我的编辑器将它们变为变量而不是字符串.我认为他们在某个地方看到了这个并复制了风格而没有理解为什么会如此.我错过了什么吗?

在Perl中,local()可以创建一个变量吗?

我在Stackoverflow和Google中读过许多帖子,告诉我local不会创建变量,而是在现有变量上运行.我在下面有一小段代码,我想知道当没有创建这样的变量时本地是如何工作的.我写这篇文章只是为了理解这个概念而且我对Perl来说相对较新.解决方法除非您使用my声明变量,否则没有完整包规范的变量将进入当前包.以下是您第一次看到变量的用法以及它们的用途:local设置包变量的范围.声明此“动态”

regex – Perl:查找变量的值是否与数组中的值匹配

我是个新手.我有一个代码,其中变量在foreach循环期间加载了几个值.我想要做的是只在该变量中对该变量执行某些操作.在perl中执行此操作的最有效方法是什么,因为我正在处理的数据非常大.我的问题的一个简单例子是,说我有一系列我想要的水果但是我在foreach循环中有一个$fruit变量,它从一个包含所有不同类型水果的数据文件中获取水果的名称.我如何只挑选@fruits_i_like数组中$fruit的那些案例?

如何自动初始化Perl中的所有标量变量?

Perlautomaticallyinitializesvariables默认为undef.有没有办法覆盖这个默认行为并告诉Perl解释器将变量初始化为零(或其他一些固定值)?解决方法CodeComplete中的建议对于诸如C之类的语言非常重要,因为当您拥有时计数器的价值就是占用那段记忆的任何事情.在Perl中,使用时声明变量毫无疑问,$counter的价值不是一些随机垃圾.因此,建议背后的动机,