N. Ganesh Babu wrote:
Dear All,

Hello,

My test is as follows:

$line = "jlla jldsfjlfj lfla (1\p=n-\5) fk (2) ljljj ljlfaufi lfjlakfh (10, 11) lfjdlaj (10, 11\p=n-\15) ndsfdjksnk (2, 15, 16) dkhfak";

Backslashes are interpolated in double quoted strings. Perhaps you meant to escape the backslashes or use a single quoted string instead?


my output of the $line should be like this.

$line = "jlla jldsfjlfj lfla (<lr=C1>1</lr>\p=n-\<lr=C5>5</lr>) fk (<lr=C2>2</lr>) ljljj ljlfaufi lfjlakfh (<lr=C10>10</lr>, <lr=C11>11</lr>) lfjdlaj (<lr=C10>10</lr>, <lr=C11>11</lr>\p=n-\<lr=C15>15</lr>) ndsfdjksnk (<lr=C2>2</lr>, <lr=C15>15</lr>, <lr=C16>16</lr>) dkhfak";

my code is as follows:

$line=~s!\(([1-9]{1,3}((, |\\p=n-\\)[1-9]{1,3})*)\)!\(@{[map"<lr=C$_>$_</lr>",split"(, |\\p=n-\\)",$1]}\)!g;

I am getting the following error:

Unmatched ( in regex; marked by <-- HERE in m/( <-- HERE , |\p=n-\)/ at s.pl line 8.

Please help in rectifing the error mentioned.

Your problem is that the replacement string is being evaluated as well as interpolated so "\\)" becomes "\)" after interpolation and ")" after evaluation.

You want something like:

$line =~ s!(\([^)]+\))! ( my $x = $1 ) =~ s-(\d+)-<lr=C$1>$1</lr>-g; $x !eg;



John
--
use Perl;
program
fulfillment

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to