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を使用すると、1つのステップで可能です。

$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 に答える