Auto::Random でエラー発生
Auto::Random モジュールを導入したところエラーが発生した。
FreeBSD 9 の時はエラーは無かった。
解決策不明。
21:48 *** Reloaded configuration file.
21:48 *** Module Auto::Random will be loaded newly.
21:48 *** ===== ERROR =====
21:48 *** Couldn't load module Auto::Random because of exception.
21:48 *** syntax error at module/Tools/LinedDB.pm line 18, near "$key qw(Parse Build Compare Update Hash)"
21:48 *** Global symbol "$key" requires explicit package name at module/Tools/LinedDB.pm line 19.
21:48 *** Global symbol "$key" requires explicit package name at module/Tools/LinedDB.pm line 20.
21:48 *** Global symbol "%arg" requires explicit package name at module/Tools/LinedDB.pm line 20.
21:48 *** Global symbol "$key" requires explicit package name at module/Tools/LinedDB.pm line 20.
21:48 *** Global symbol "%arg" requires explicit package name at module/Tools/LinedDB.pm line 24.
21:48 *** Global symbol "%arg" requires explicit package name at module/Tools/LinedDB.pm line 24.
21:48 *** Global symbol "%arg" requires explicit package name at module/Tools/LinedDB.pm line 24.
21:48 *** Global symbol "%arg" requires explicit package name at module/Tools/LinedDB.pm line 29.
21:48 *** Global symbol "%arg" requires explicit package name at module/Tools/LinedDB.pm line 30.
21:48 *** Global symbol "%arg" requires explicit package name at module/Tools/LinedDB.pm line 31.
21:48 *** Global symbol "%arg" requires explicit package name at module/Tools/LinedDB.pm line 32.
21:48 *** Global symbol "%arg" requires explicit package name at module/Tools/LinedDB.pm line 33.
21:48 *** Global symbol "%arg" requires explicit package name at module/Tools/LinedDB.pm line 34.
21:48 *** Global symbol "%arg" requires explicit package name at module/Tools/LinedDB.pm line 35.
21:48 *** Global symbol "%arg" requires explicit package name at module/Tools/LinedDB.pm line 40.
21:48 *** Global symbol "%arg" requires explicit package name at module/Tools/LinedDB.pm line 40.
21:48 *** Global symbol "$class" requires explicit package name at module/Tools/LinedDB.pm line 48.
21:48 *** syntax error at module/Tools/LinedDB.pm line 51, near "}"
21:48 *** module/Tools/LinedDB.pm has too many errors.
21:48 *** inside module load: Auto::Random;
21:48 *** inside Timer: ReloadTrigger/reload;
21:48 *** Compilation failed in require at module/Tools/FileCache/EachFile.pm line 11.
21:48 *** inside module load: Auto::Random;
21:48 *** inside Timer: ReloadTrigger/reload;
21:48 *** BEGIN failed--compilation aborted at module/Tools/FileCache/EachFile.pm line 11.
21:48 *** inside module load: Auto::Random;
21:48 *** inside Timer: ReloadTrigger/reload;
21:48 *** Compilation failed in require at module/Tools/FileCache.pm line 15.
21:48 *** inside module load: Auto::Random;
21:48 *** inside Timer: ReloadTrigger/reload;
21:48 *** BEGIN failed--compilation aborted at module/Tools/FileCache.pm line 15.
21:48 *** inside module load: Auto::Random;
21:48 *** inside Timer: ReloadTrigger/reload;
21:48 *** Compilation failed in require at module/Auto/Random.pm line 10.
21:48 *** inside module load: Auto::Random;
21:48 *** inside Timer: ReloadTrigger/reload;
21:48 *** BEGIN failed--compilation aborted at module/Auto/Random.pm line 10.
21:48 *** inside module load: Auto::Random;
21:48 *** inside Timer: ReloadTrigger/reload;
21:48 *** Compilation failed in require at (eval 181) line 1.
21:48 *** inside module load: Auto::Random;
21:48 *** inside Timer: ReloadTrigger/reload;
21:48 *** BEGIN failed--compilation aborted at (eval 181) line 1.
21:48 *** inside module load: Auto::Random;
21:48 *** inside Timer: ReloadTrigger/reload;
Syntax error の特定
module/Tools/LinedDB.pm の 18 行目を抜粋。
シンタックスエラーを無くすだけなら以下の修正をする。
ただし Auto::Random は機能しない。
関係ファイルの文字コードを全て UTF8 とすることで解決した。
foreach my $key qw(Parse Build Compare Update Hash) { ↓ foreach my $key (qw(Parse Build Compare Update Hash)) {