wannabeperlie has asked for the wisdom of the Perl Monks concerning the following question:
Hi,
I have a question regarding delaying interpolation of a variable when it is used in a regular expression. The below code snippet demonstrates the problem
%cat test.pl
When I execute the above code the output I get is :#!/usr/bin/perl use strict; my $line = "System has tool zigzag version 3.6"; my $match = 'System\s+has\s+tool\s+([0-9a-zA-Z_-]+)\s+version\s+(.*)'; my $replace = 'System has tool $1 version ABC'; $line =~ s/$match/$replace/g; print "Line after replacement: $line \n";
%./test.pl
Line after replacement: System has tool $1 version ABC
The output I need is :
Line after replacement: System has tool zigzag version ABC
How do I get $1 to be interpolated in the replacement pattern ? I tried other variants like : e,ee etc but none yeild the result I need.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: delayed variable interpolation in a regular expression
by davido (Cardinal) on Apr 25, 2006 at 07:27 UTC | |
Re: delayed variable interpolation in a regular expression
by ashokpj (Hermit) on Apr 25, 2006 at 07:42 UTC | |
Re: delayed variable interpolation in a regular expression
by Tanktalus (Canon) on Apr 25, 2006 at 15:31 UTC | |
Re: delayed variable interpolation in a regular expression
by johngg (Canon) on Apr 25, 2006 at 09:12 UTC | |
by Hue-Bond (Priest) on Apr 25, 2006 at 10:18 UTC | |
by SamCG (Hermit) on Apr 25, 2006 at 16:03 UTC | |
by johngg (Canon) on Apr 25, 2006 at 10:34 UTC |
Back to
Seekers of Perl Wisdom