正規表現で一発ですね。
しかし、ディレクトリの区切りが『/』と『\』あるので、気をつけないとなりません。
標準モジュール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";