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
  • Perlとはテキスト処理の記述性とパフォーマンスに優れ、正規表現が言語に組み込まれているプログラミング言語です。
  • Linuxサーバーでのフィルタリングプログラム、複数行の文字列を処理、ファイル内容の検索・置換などが得意
  • Perlはgitopensslなど広く普及したUnix/Linuxミドルウェアの補助ツールとして採用実績あり。後方互換性とポータビリティの高さがひとつの理由と推測。
  • 大量のテキストを扱うWeb開発も得意。ロングテールSEOを意識したWebサイト、アドテクやソーシャルゲームでの50ms以内のJSONの生成など。