Меня осенило, вы просматриваете результаты через веб-сервер, не так ли? Материал <%%> должен быть заменен программой-шаблоном или включением на стороне сервера. Вы никогда не увидите этот текст. Скорее всего, файл ../common/cmufx.jsp не существует (например, неправильный путь) или ничего не содержит. Посмотрите, что выкладывает программа в командной строке. Если это то, что вы ожидаете, то проблема в другом месте (например, путь к cmufx.jsp или неправильная настройка вашего ssi).
В ваших данных есть пробел, где у вашего регулярного выражения есть /:
data V
<link rel="stylesheet" type="text/css" href="../css style_hbpSA_css.jsp" />
regex V
<link rel="stylesheet" type="text/css" href="../css/style_hbpSA_css.jsp" />
Кроме того, вы используете. в вашем регулярном выражении, не избегая их. . символ в регулярном выражении соответствует любому символу, кроме новой строки (если не используется опция / s). Ваше регулярное выражение должно выглядеть примерно так:
s{<link rel="stylesheet" type="text/css" href="\.\./css style_hbpSA_css\.jsp" />}{}
или
s{<link rel="stylesheet" type="text/css" href="[.][.]/css style_hbpSA_css[.]jsp" />}{}
в зависимости от того, что выглядит для вас менее уродливо. Первый избегает специального значения., А второй создает класс символов из одного символа, ..
Вы говорите, что у вас все еще есть проблемы, вот полный сценарий, который делает правильные вещи, вы можете сказать нам, где ваш код отличается от этого:
#!/usr/bin/perl
use strict;
use warnings;
while(<DATA>){
s{<link rel="stylesheet" type="text/css" href="../css/style_hbpSA_css.jsp" />}{
<%@ include file="../common/cmufx.jsp" %>
<link rel="stylesheet" type="text/css" href="<%=basePath%>/<fmt:message key="application.version"/>/css/style_hbpSA_css.jsp" />;};
print;
}
__DATA__
<title>Company Selection</title>
<link rel="stylesheet" type="text/css" href="../css/style_hbpSA_css.jsp" />