使用 Perl 的 File::Find 时如何将参数传递给所需的函数?
可以使用 Perl 的 File: :Find 模块如下:
find( \&wanted, @directories);
我们如何向 wanted
函数添加参数?
例如,我想遍历 /tmp
中的文件,从每个文件中提取一些信息,并将结果存储到不同的目录中。输出目录应作为参数给出。
Possible Duplicate:
How do I pass parameters to the File::Find subroutine that processes each file?
One can use Perl's File::Find module like this:
find( \&wanted, @directories);
How can we add a parameter to the wanted
function?
For example, I want to traverse the files in /tmp
extracting some information from each file and the result should be stored to a different directory. The output dir should be given as a parameter.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您使用闭包:
You use a closure:
您可以创建您喜欢的任何类型的代码参考。您不必使用对命名子例程的引用。有关如何执行此操作的许多示例,请参阅我的 File:: Find::Closures 模块。我创建该模块来准确回答这个问题。
You can create any sort of code reference you like. You don't have to use a reference to a named subroutine. For many examples of how to do this, see my File::Find::Closures module. I created that module to answer precisely this question.
File::Find 的合约指定了传递给
&想要
。如果您想在回调中提供额外的信息,您可以 创建一个子引用,使用所需的参数调用您想要的子。
File::Find's contract specifies what information is passed to
&wanted
.If there is extra information you want to make available in the callback, you can create a sub reference that calls your wanted sub with the desired parameters.