Linux以外の環境であまりperlを使っていなかったもんで。
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; が正解。WindowsやMacだと、ファイル名がケースインセンシティブ*1なので、BaseNameとタイピングしても通ってしまうんですねー。そして、ファイル名が違うからと言う理由で2回コンパイルされてwarningになる、と。