以下のデータを持つ配列があるとしましょう
@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
作業を行うモジュールがあるのに、なぜ正規表現を使用するのですか。これはPerl5のコアモジュールです。
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'
];