Замена или замена в 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;
Другие вопросы по тегам