燈明ブログ

現状は小池啓仁の応援ブログ

パス名からファイル名を取得する

正規表現で一発ですね。
しかし、ディレクトリの区切りが『/』と『\』あるので、気をつけないとなりません。
標準モジュールBasenameを使うともっと簡単に出来ますね。
だた、Basenameモジュールのfileparse関数は、リストを返しますので小カッコでスライスして、ファイル名を取得します。

use strict;
use warnings;
use File::Basename;


my $file_path1 = 'C:\Documents and Settings\koike\hoge\fname.pl';
my $file_path2 = '/cygdrive/c/Documents and Settings/koike/hoge/fname.pl';


$file_path1  =~ /(.*\/|.*\\)(.*)$/;
print $2, "\n";


$file_path2  =~ /(.*\/|.*\\)(.*)$/;
print $2, "\n";


my ($file_name) = fileparse($file_path1);
print $file_name , "\n";


($file_name) = fileparse($file_path2);
print $file_name , "\n";

追記

以下のようにBasenameモジュールのbasename関数を使用するとスカラーコンテキストでもファイル名が取得できます。

$file_name = basename($file_path1);


また、正規表現の基礎については以下で、どうぞ。


できれば、本ブログの応援クリック も、よろしくお願い致します。