0

我有一个 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**

并且有很多这样的行,但表达是一样的。任何人都可以帮我解决这个问题。

4

2 回答 2

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;
于 2012-07-12T09:02:52.917 回答
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

于 2012-07-12T10:25:28.993 回答