Замена или замена в Perl с использованием Regex
Я не уверен, что я делаю не так здесь. Почему блок регулярных выражений не совпадает и замена не происходит. Пожалуйста помоги.
#!usr/bin/perl
use strict;
use warnings;
my $x = << "END";
// @@@ START COPYRIGHT @@@
//
// nth dimesion
//
// Copyright 2007
// nth dimension
// Protected as an unpublished work.
//
// The computer program listings, specifications and documentation
// herein are the property of nth dimension Company,
// L.P., or a third party supplier and shall not be reproduced,
END
$x=~s/\/\/\s+Copyright\s+\d{4}$/Copyright 2008/g;
print "$x\n";
Печать $x печатает то же значение. Пожалуйста, помогите.
1 ответ
Решение
Тебе нужно /m
переключатель регулярных выражений, который лечит $
как конец строки (вместо конца строки)
$x=~s/\/\/\s+Copyright\s+\d{4}$/Copyright 2008/gm;
И если вы хотите оставить на месте все, что осталось от номера, вы можете использовать \K
$x =~ s|//\s+Copyright\s+\K\d{4}$|2008|gm;