说我有具有以下数据的数组搜索和阵列中的替代
@array = ('/root/level1','/root/level2',
'/root/level1/level2','/root/level1/level2/level3')
我想遍历这个数组,并用其最后一个字替换每个元素作为
@array = ('level1','level2','level2','level3')
我正则表达式不好,任何人都可以帮忙吗?
说我有具有以下数据的数组搜索和阵列中的替代
@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'
];
实际上,我拥有的数组不包含文件路径,这些是简单的名称,看起来像路径,但它们不是。所以我宁愿使用正则表达式。 – 2013-03-20 04:33:20
你认为正则表达式使用不同于这个模块的规则吗? – TLP 2013-03-20 13:48:04
的工作,感谢。 – 2013-03-18 08:40:40