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

问题描述 投票:0回答:4

我有如下所示的数组。我想使用 Perl 从中删除最后的工作。

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

我想获取没有

log_info.txt
的目录结构。

例如想要输出

directory1/directory2/directory3/

regex perl split
4个回答
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";
}

输出:

directory1/directory2/directory3/

0
投票

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

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

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

dirname


0
投票

可能有更好的方法来做到这一点,但这里有一个快速但肮脏的修复:

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

将剪掉最后一部分。

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

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

0
投票
      Below line working for me.

          $array =~ s/log_info.txt//g;
© www.soinside.com 2019 - 2024. All rights reserved.