Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発ならPerl
  1. Perl
  2. ファイル操作
  3. モジュール
  4. 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
Giblog