1
15
从这个问题看来,您似乎正在努力处理变量范围和引用所指向的数据持久性之间的差异。数据[“elemnt1”、“elmnt2”]被分配给一个变量($array_ref),该变量在do_something结束时超出范围。但是,因为返回了它,所以存在对数据的引用,即使$array_ref超出范围,它也会持续存在。 上次我检查时,Perl使用引用计数进行垃圾收集,这样在对数组的最后一次引用超出作用域之前(例如,如果在示例末尾取消设置$ref),就不会对该数组进行垃圾收集。 |
2
8
亚历克斯·费曼有正确的想法。变量名有作用域,数据没有作用域。请求匿名数组的作用域就像请求字符串的作用域。只要有一个变量提供对字符串的直接或间接(即引用)访问,就可以访问该字符串。 |
3
6
如果我正确理解这个问题,$ref的范围是file2.pl的全部内容。 在do-something中,您正在创建一个匿名数组,因此它位于堆中,不属于任何范围。所以这个引用可以被传递,并且可以在任何地方使用,直到不再有指向它的引用为止。 |
4
2
只要有人提到它,它就可以使用。 |
5
0
它的作用域仅限于do-something子例程,在该子例程中创建,直到它返回并存储在$ref中。一旦它存储在file2.pl中的$ref中,它就位于file2.pl中的任何位置。 |
Manny · 如何比较Perl中的字符串? 2 年前 |
BioRod · 我不能用Perl打印键和值 2 年前 |
user17227456 · Perl CLI代码无法追加字符串行 2 年前 |
LearnToBeBetter · 读取文件,搜索字符串,打印字符串 2 年前 |
KJ7LNW · 一些波斯语文本的宽字符印刷,但其他文本则没有 2 年前 |
con · 如何搜索大型数据结构并返回一系列给出特定值的键/数组? 2 年前 |
Pranay Nanda · 使用regex解析许可证文件 6 年前 |