我做了一个答案如下评论我earlier question about glob
:函数调用之间如何存储glob迭代器?
水珠()或死亡的作品罚款当一个函数调用中。它可以重复调用并按预期工作。所以上面的两个文件存在。第三次功能失败时称为三次全局(main,function,main = success)。函数内的行为与函数内的行为不同。
ysth回应:
在功能或没有没有区别,但在源中的每个水珠运营商是一个独立的迭代器,所以你不会看到这个问题,除非你循环回以某种方式
在下面的代码中,为什么/在哪里/如何在调用之间保存glob
运算符的迭代器?为什么它没有超出范围?我知道它在做什么,但看不到它在记忆中的表现。
sub in_function {
my $file = shift;
glob($file) or die ("$file file was not found\n"); #this fails second time called
}
这个问题试图继续一个不存在的“线程”。每个帖子堆栈溢出应该是唯一的 – Borodin 2014-10-27 17:48:35
总是使用glob在列表上下文中的可重复使用的代码,除非你确定你会耗尽迭代器在试图开始一个新的迭代之前 – ysth 2014-10-27 17:50:11
未被glob连接到'glob(3)'?如果是这样,这取决于你的glob的实现。 – 2014-10-27 17:50:15