walter.l...@schwindt.eu <> wrote:
> Hello,
> 
> I have the following strings:
> TEST1=/bla/\${var1}/bla/${var2}a${var3}/bla
> TEST2=/bla/\${var1}/bla/${var2}${var3}/bla
> 
> I want to transform them:
> TEST1=/bla/\$ENV{var1}/bla/$ENV{var2}a$ENV{var3}/bla
> TEST2=/bla/\$ENV{var1}/bla/$ENV{var2}$ENV{var3}/bla
> 
> The rule: substitute all $var to $ENV{var}, but not if the character
> before $ is a \ (backslash). 
> 
> My solution works fine with TEST1 but not with TEST2:
> s/(^|[^\\]?)\$\{(\w+)\}/$1\$ENV\{$2\}/g;
> I get:
> TEST1=/bla/\$ENV{var1}/bla/$ENV{var2}a$ENV{var3}/bla
> TEST2=/bla/\$ENV{var1}/bla/$ENV{var2}{var3}/bla

Given your rule above, I would have said that neither worked. Surely,
\${var1} shouldn't have been changed.

> 
> The problem occure, if no character is between two variables.
> 
> Some ideas?

It would help a lot if you provided real code. Something that we could
cut & paste and run for ourselves.

HTH

-- 
Brian Raven 
This e-mail may contain confidential and/or privileged information. If you are 
not the intended recipient or have received this e-mail in error, please advise 
the sender immediately by reply e-mail and delete this message and any 
attachments without retaining a copy.

Any unauthorised copying, disclosure or distribution of the material in this 
e-mail is strictly forbidden.

_______________________________________________
Perl-Unix-Users mailing list
Perl-Unix-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to