在数组中搜索和替换

时间:2013-03-18 08:29:52

标签: regex perl replace

假设我有一个具有以下数据的数组

@array = ('/root/level1','/root/level2',
          '/root/level1/level2','/root/level1/level2/level3')

我想循环遍历这个数组并用最后一个单词替换每个元素

@array = ('level1','level2','level2','level3')

我对正则表达式不满意,有人可以帮忙吗?

2 个答案:

答案 0 :(得分:5)

使用分割和地图:

@array=map{(split(/\//,$_))[-1]}@array;

使用正则表达式:

@array=map{m|.*/(.*)|}@array;

答案 1 :(得分:3)

为什么在使用File::Basename模块为您完成工作时使用正则表达式。它是Perl 5中的核心模块。

use strict;
use warnings;
use Data::Dumper;
use File::Basename;

my @array = ('/root/level1',
             '/root/level2',
             '/root/level1/level2',
             '/root/level1/level2/level3');

@array = map basename($_), @array;
print Dumper \@array;

<强>输出:

$VAR1 = [
          'level1',
          'level2',
          'level2',
          'level3'
        ];