假设我有一个包含以下数据的数组
@array = ('/root/level1','/root/level2',
'/root/level1/level2','/root/level1/level2/level3')
我想遍历这个数组并将每个元素替换为最后一个单词
@array = ('level1','level2','level2','level3')
我不擅长正则表达式,有人可以帮忙吗?
使用拆分和映射:
@array=map{(split(/\//,$_))[-1]}@array;
使用正则表达式:
@array=map{m|.*/(.*)|}@array;
当您有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'
];