複数の perl モジュールで同じファイル ハンドルを使用する必要があります。これが私の例です a.pl
#!/usr/bin/perl -w
our $OUT_FILE_HANDLE;
require b;
open($OUT_FILE_HANDLE, ">./a.log");
print $OUT_FILE_HANDLE "text1\n";
b::f($OUT_FILE_HANDLE); // this works
午後
package b;
sub f($) {
my $a = shift;
print $a "text2\n"; // get error here
}
f($main::OUT_FILE_HANDLE);
1;
「未定義の値をシンボル参照として使用できません」というエラーが表示されます
b.pm でハンドルを直接 (引数として関数に渡さずに) 使用すると、正常に動作します。
午後
package b;
sub f() {
print $main::OUT_FILE_HANDLE "text2\n"; // this works
}
f();
1;