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

Perlプログラミングちゃんねるのご紹介

Perlの書籍
  • 業務に役立つPerl

    ログ解析など日本語を含むテキスト処理の実践!
    この私、Perlゼミの作者が執筆しています。
    ご購入、口コミ歓迎。
  • Perlの書籍 »
自己紹介
木本裕紀

「今日も元気だ! Perlで元気!」

Perlプログラミングちゃんねる

Youtubeチャンネル登録、いいね、コメント歓迎

Twitter
フォロー、いいね、リツート、コメント歓迎

kimoto.yuki@gmail.com
応援メッセージ、質問、間違い報告歓迎

Perl総合研究所