Я пытаюсь получить регулярное выражение в этом цикле,
my $vmsn_file = $snapshots{$snapshot_num}{"filename"};
my @current_vmsn_files = $ssh->capture("find -name $vmsn_file");
foreach my $vmsn (@current_vmsn_files) {
$vmsn =~ /(.+\.vmsn)/xm;
print "$1\n";
}
для захвата имени файла из этой строки,
./vmfs/volumes/4cbcad5b-b51efa39-c3d8-001517585013/MX01/MX01-Snapshot9.vmsn
Единственная часть, которую я хочу, это частьфактическое имя файла, а не путь.
Я попытался использовать выражение, которое было привязано к концу строки с использованием $
, но, похоже, это не имело никакого значения.Я также попытался использовать 2 .+
входов, один перед группой захвата и один внутри группы захвата.Еще раз не повезло, это также показалось мне немного беспорядочным, поэтому я не хочу этого делать, если не должен.
Любая идея, как мне получить только имя файла после последнего /
доконец строки?
При необходимости можно добавить еще, я не уверен, что мне нужно было опубликовать, чтобы предоставить достаточно информации.
- Обновление -
С5 минут ковырявшись я как будто разобрался.(какой сюрприз)
Так что теперь я остался с этим, (и это работает)
my $vmsn_file = $snapshots{$snapshot_num}{"filename"};
my @current_vmsn_files = $ssh->capture("find -name $vmsn_file");
foreach my $vmsn (@current_vmsn_files) {
$vmsn =~ /.+\/(\w+\-Snapshot\d+\.vmsn)/xm;
print "$1\n";
}
Есть ли способ сделать это лучше?