使用Perl';时如何将参数传递给所需函数;s文件::查找?
可能重复:使用Perl';时如何将参数传递给所需函数;s文件::查找?,perl,file-find,Perl,File Find,可能重复: 可以像这样使用Perl模块: find( \&wanted, @directories); 我们如何向所需的函数添加参数 例如,我想遍历/tmp中的文件,从每个文件中提取一些信息,结果应该存储到不同的目录中。输出目录应该作为一个参数给出。的合同指定了传递给&want的信息 所需函数不接受任何参数,而是通过变量集合执行其工作 $File::Find::dir是当前目录名 $是该目录中的当前文件名 $File::Find::name是文件的完整路径名 如果您想在回调中提供
可以像这样使用Perl模块:
find( \&wanted, @directories);
我们如何向所需的函数添加参数
例如,我想遍历/tmp
中的文件,从每个文件中提取一些信息,结果应该存储到不同的目录中。输出目录应该作为一个参数给出。的合同指定了传递给&want
的信息
所需函数不接受任何参数,而是通过变量集合执行其工作
$File::Find::dir
是当前目录名
$是该目录中的当前文件名
$File::Find::name
是文件的完整路径名
如果您想在回调中提供额外的信息,您可以。您可以创建任何类型的代码引用。您不必使用对命名子例程的引用。有关如何执行此操作的许多示例,请参见我的模块。我创建该模块就是为了准确地回答这个问题。您使用一个闭包:
use File::Copy;
my $outdir= "/home/me/saved_from_tmp";
find( sub { copy_to( $outdir, $_); }, '/tmp');
sub copy_to
{ my( $destination_dir, $file)= @_;
copy $file, "$destination_dir/$file"
or die "could not copy '$file' to '$destination_dir/$file': $!";
}
请更具体地描述您正在尝试做什么,我将更新我的答案。另请参阅更新:我喜欢比文件::查找更好。然而,布莱恩的模块可能更接近你真正想要的。@SinanÜnür你的话解决了我的问题。如果你把它作为一个答案,我会标记为accepted@ilang7不必为任何人感到羞耻。谢谢,我知道这个选项,但我想知道是否有一些黑客通过参数(不使用全局)。