Берегись!dirname()
намеренно глуп, чтобы эмулировать команду оболочки dirname
.Это не столько «дать мне часть каталога этого пути к файлу», сколько «дать мне все, кроме последней части этого пути».Почему это важно?
my $dir = "/foo/bar/"; # obviously a directory
print dirname($dir); # prints /foo
Это нормально, только если вы понимаете, что dirname
не возвращает имя.
Если вы хотите, чтобы вышеприведенное вернуло /foo/bar/
вам лучше использовать File :: Spec.
use File::Spec;
my($vol,$dir,$file) = File::Spec->splitpath($path);