0

重複の可能性:
ファイルへのフル パスが与えられた場合、ファイル名なしでパスだけを取得するにはどうすればよいですか?

私のフルパスは、これらのタイプのパターンを持つことができます。ディレクトリパスを取得するにはどうすればよいですか?

file=M:\ccadm01_IACB_DEV\Informatica_AVOB\IACB_src\parm\d_param_ZRK176E
file=M:\ccadm01_IACB_DEV\Informatica_AVOB\IACB_src\parm\p_param_HCB@002.txt
file=M:\ccadm01_IACB_DEV\Informatica_AVOB\IACB_src\parm\p_param_QCB@B006.1.txt

ありがとうジロン

4

2 に答える 2

1

前述のように、使用できる CPAN モジュールは多数あります。つまり、文字列操作を回避できます。例えば

use File::Basename 'fileparse';

my @files = qw(
    file=M:\ccadm01_IACB_DEV\Informatica_AVOB\IACB_src\parm\d_param_ZRK176E
    file=M:\ccadm01_IACB_DEV\Informatica_AVOB\IACB_src\parm\p_param_HCB@002.txt
    file=M:\ccadm01_IACB_DEV\Informatica_AVOB\IACB_src\parm\p_param_QCB@B006.1.txt
);

my @dirs = map { (fileparse($_))[1] } grep { s/^file=// } @files;
print join "\n", @dirs;
于 2012-12-19T03:43:10.420 に答える
0

これで問題は解決しますか

my @list = qw(
  file=M:\ccadm01_IACB_DEV\Informatica_AVOB\IACB_src\parm\d_param_ZRK176E
  file=M:\ccadm01_IACB_DEV\Informatica_AVOB\IACB_src\parm\p_param_HCB@002.txt
  file=M:\ccadm01_IACB_DEV\Informatica_AVOB\IACB_src\parm\p_param_QCB@B006.1.txt
);

for my $line (@list) {
  my @split_path =  split(/\\/, $line);
  for my $i (1..$#split_path) {
    print @split_path[$i], "/";
  }
  print "\n";
}
于 2012-12-19T03:01:58.950 に答える