0

以下のデータを持つ配列があるとしましょう

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

この配列をループして、各要素を最後の単語に置き換えたい

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

私は正規表現が苦手ですが、誰か助けてもらえますか?

4

2 に答える 2

5

分割とマップの使用:

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

正規表現の使用:

@array=map{m|.*/(.*)|}@array;
于 2013-03-18T08:36:04.983 に答える
3

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'
        ];
于 2013-03-18T10:32:43.843 に答える