Perl 如何将打开的文件句柄作为函数的参数传递?
我有一个从另一个模块调用函数的主脚本。我在主脚本中打开了一个文件,我想在调用的函数中使用附加到此文件的filehandle作为参数(我不想在函数中打开该文件,因为我将在同一文件上多次调用同一函数,所以每次打开它都没有意义) 在我的主要脚本中:Perl 如何将打开的文件句柄作为函数的参数传递?,perl,file-io,Perl,File Io,我有一个从另一个模块调用函数的主脚本。我在主脚本中打开了一个文件,我想在调用的函数中使用附加到此文件的filehandle作为参数(我不想在函数中打开该文件,因为我将在同一文件上多次调用同一函数,所以每次打开它都没有意义) 在我的主要脚本中: open(my $IN_FILE, "<input.txt") or die "Can't open: $!\n"; open(my $OUT_FILE, ">output.txt") or die "Can't open: $!\n"; A
open(my $IN_FILE, "<input.txt") or die "Can't open: $!\n";
open(my $OUT_FILE, ">output.txt") or die "Can't open: $!\n";
AnotherModule->ProcessDBU($IN_FILE, $OUT_FILE);
但是,当我尝试运行脚本时,会出现以下错误:
readline() on unopened filehandle at AnotherModule.pm line 7.
是什么阻止我使用文件句柄?为什么它没有打开?如何解决此问题?您正在将函数作为方法调用
AnotherModule->ProcessDBU($IN_FILE, $OUT_FILE);
应该是
AnotherModule::ProcessDBU($IN_FILE, $OUT_FILE);
三个区别:
- 方法调用搜索继承层次结构
- 方法调用忽略原型,并且
- 方法调用将invocant(
的剩余部分)作为第一个参数传递->
- 您正在将函数作为方法调用
AnotherModule->ProcessDBU($IN_FILE, $OUT_FILE);
应该是
AnotherModule::ProcessDBU($IN_FILE, $OUT_FILE);
三个区别:
- 方法调用搜索继承层次结构
- 方法调用忽略原型,并且
- 方法调用将invocant(
的剩余部分)作为第一个参数传递->