- Perl ›
- ファイル操作 ›
- モジュール ›
- File::Spec
ファイル名を実行環境のOSでのファイル名に変換する
OSに依存しないファイル名]を作成するにはFile::Spec->catfile を使えばよいのでした。今回は、あるファイル表現を実行環境のOSのファイル名に変換する方法を解説します。設定ファイルなどでファイル名を指定するときは、Unixでのファイル表現を使う場合が多いです。
# Unixでのファイル表現 dir1/dir2/file.txt
Windows上でこのUnixのファイル表現ををWindowsのファイル表現に変換したいとします。以下のようにするのが簡単です。
File::Specの、splitdirメソッドで、$unix_pathを個別の部分に分解します。それを、catfileメソッドでつなげます。catfileは、分解されたファイル名を\で結合してくれます。
use File::Spec; my $unix_path = 'dir1/dir2/file.txt'; my $windows_path = File::Spec->catfile(File::Spec->splitdir($unix_path));
実行可能なサンプル
use strict; use warnings; use File::Spec; my $unix_path = 'dir1/dir2/file.txt'; my $windows_path = File::Spec->catfile(File::Spec->splitdir($unix_path)); print "1. ウインドウズのファイルパスに変換\n"; print $windows_path, "\n";
Windowsでの出力結果
1. ウインドウズのファイルパスに変換 dir1\dir2\file.txt