Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発ならPerl
  1. Perl
  2. ファイル操作
  3. here

OSに依存しないファイル名の作成

OSに依存しないファイル名を作成するにはFile::Specモジュールのcatfileメソッドを使用します。

use File::Spec;
my $file_name = File::Spec->catfile('t', 'test1.t');

ファイル名の規則は、OSによって異なります。/ や \ を使ってファイル名を構成してしまうと、OS間での移植性が損なわれます。File::Specモジュールを使えば、実行しているOSに応じたファイル名の規則にしたがって、ファイル名が作成されるので、異なるOSに移植しても、手直しが発生しません。

updirメソッドを使用するとOSに依存しない「1階層上のディレクトリ」を表現することができます。

File::Spec->updir

UnixでもWindowでも、1階層上のディレクトリの表現は、 .. ですが、もしかしたら、他のOSでは、表現が異なるかもしれません。

サンプル

OSに依存しないファイル名を作成するサンプルです。

use strict;
use warnings;

# OSに依存しないファイル名を作成する

use File::Spec;

print "1: OSに依存しないファイル名を作成する。\n";
# Unix では  、lib/test1.t となり、
# Windowsでは、lib\test1.t となる。
my $file_name = File::Spec->catfile( 't', 'test1.t' );
print "\$file_name = $file_name\n\n";

print "2: OSに依存しない「1階層上のディレクトリ」を表\現する。\n";
my $up_dir = File::Spec->updir;
print "\$up_dir = $up_dir\n\n";

print "3: このスクリプトの、1階層上の、lib というディレクトリ名を作成する。\n";
use FindBin;
my $lib_dir = File::Spec->catfile($FindBin::Bin, File::Spec->updir, 'lib');
print "\$lib_dir = $lib_dir\n\n";

(参考)FindBin

Giblog