我有一个HTML文件,其中有许多表达式,如
/v/global/nagargaurav/CALL::ROWS_ARE_MATCHED.log
我有这样的代码
my $dir = /v/global/nagargaurav/;
$html =~ s/$dir\\/(.*?)::(.*?)\.log/$1 : $2/g;
print $html;
它给出了输出 -
CALL : ROWS_ARE_MATCHED
但我需要的是像这样输出
**CALL : ROWS ARE MATCHED**
并且有许多这样的线但表达式是相同的。 任何人都可以帮助我。
答案 0 :(得分:1)
use strict;
use warnings;
my $html = '/v/global/nagargaurav/CALL::ROWS_ARE_MATCHED.log';
my $dir = '/v/global/nagargaurav/';
$html =~ s/$dir\/(.*?)::(.*?)\.log/$1 : $2/g;
$html =~ s/_/ /g;
print $html;
答案 1 :(得分:0)
使用/ e可以一步完成:
$html =~ s{ $dir /? ([^:]+) :: ([^.]+) \.log }
{ do{ local$_=$2;y/_/ /;"$1 : $_"} }gsex;
结果:
CALL : ROWS ARE MATCHED
顺便说一句,你的声明不是Perl,这些应该是:
my $html = '/v/global/nagargaurav/CALL::ROWS_ARE_MATCHED.log';
my $dir = '/v/global/nagargaurav/';
或类似。
此致
RBO