北海道苫小牧市出身の初老PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

useするとwarningが

Linux以外の環境であまりperlを使っていなかったもんで。

WindowsMacで、

use File::BaseName;
use File::Find;

とやると、以下のwarningが出ます。

Subroutine fileparse_set_fstype redefined at /System/Library/Perl/5.8.6/File/Basename.pm line 157.
Subroutine fileparse redefined at /System/Library/Perl/5.8.6/File/Basename.pm line 171.
Subroutine basename redefined at /System/Library/Perl/5.8.6/File/Basename.pm line 238.
Subroutine dirname redefined at /System/Library/Perl/5.8.6/File/Basename.pm line 251.

なんででしょう?

ヒント: File::Find のなかで File::Basename を require してます。


答え:
use File::Basename; が正解。WindowsMacだと、ファイル名がケースインセンシティブ*1なので、BaseNameとタイピングしても通ってしまうんですねー。そして、ファイル名が違うからと言う理由で2回コンパイルされてwarningになる、と。

*1:OS Xはセンシティブなフォーマットも可能ですね