使用perl删除字符串中的最后一个单词

时间:2014-08-28 18:43:02

标签: regex perl split

我有如下的数组。我想使用Perl删除它的最后一项工作。

my @array = 'directory1/directory2/directory3/log_info.txt';

我希望获得没有log_info.txt的目录结构。

例如想要输出directory1/directory2/directory3/

由于

4 个答案:

答案 0 :(得分:2)

File::Basename是一种使用Perl解析文件路径的传统且可移植的方法。

use warnings;
use strict;
use File::Basename qw(dirname);

my @array = 'directory1/directory2/directory3/log_info.txt';
for (@array) {
    print dirname($_), "/\n";
}

__END__

directory1/directory2/directory3/

答案 1 :(得分:0)

可能有更好的方法可以做到这一点,但这是一个快速而肮脏的解决方法:

$/ = "log_info.txt";
chomp(@array);

将切断最后一部分。

或者你可以使用正则表达式:

my ($dir) = @array[0] =~ /(.*)\/log_info.txt/;

答案 2 :(得分:0)

以下是更改数组中每个项目的正则表达方式:

@array = map { s![^/]+$!!r } @array;

但在这种特殊情况下,我会选择dirname

答案 3 :(得分:0)

      Below line working for me.

          $array =~ s/log_info.txt//g;