Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Regex Interpolation

by spectre (Scribe)
on Jun 24, 2000 at 00:22 UTC ( #19659=perlquestion: print w/ replies, xml ) Need Help??
spectre has asked for the wisdom of the Perl Monks concerning the following question:

This might be a silly question, it IS the first time I've asked one here though, so I hope if it is deemed silly I'll be forgiven. Here is my quandry:
I need the $main::pageVar variable in the line below to interpolate, a +nd I'm not sure how I would do it. $retVal=~s/showpos\"\svalue\=\"1\"/showpos\"\svalue\=\"$main::pageVar1 +\"/;

Comment on Regex Interpolation
Download Code
Re: Regex Interpolation
by btrott (Parson) on Jun 24, 2000 at 00:28 UTC
    What you have currently should already interpolate, if I'm understanding what you mean by interpolate. You should get rid of some of those backslashes, though, because they're not needed. And change the "\s" on the right-hand side of the substitution into a " ".
    $retVal =~ s/showpos"\svalue="1"/showpos" value="$main::pageVar1"/ +;
    This works for me.
      I re-wrote that line, trying to make that swap at a different place in the code, here is what I found:
      print "$retVal\n"; print "Success!\n" if $retVal=~s/showpos=1/showpos=$main::pageVar1/; print "$retVal\n"; print "$main::pageVar\n";
      returns this:
      catCount=0&prodCount=36&show=prod&showpos=1&searchtxt=chip ... (The rest is irrelevant)
      Success!
      catCount=0&prodCount=36&show=prod&showpos=&searchtxt=chip
      1

      What I want to see here is the section "showpos=" to contain the value of $main::pageVar next to a number one.

      Regards,
      spectre

      -----BEGIN PGP SIGNATURE-----
      Version: GnuPG v1.0.1 (GNU/Linux)
      Comment: For info see http://www.gnupg.org

      iD8DBQE5U4KjQY9UwXAsuBQRAtnrAJ4tREiYW93esFhsZjLPQ21UJLPTQQCePU7A
      6c5CzwVZr80Cs5vo3MJH5Ow=
      =7nk0
      -----END PGP SIGNATURE-----
        The problem comes from the 1 at the end of $main::pageVar. Perl thinks that the variable is $main::pageVar1. To distinguish the variable from the literal 1 change the variable reference to ${main::pageVar} so that the regex looks like print "Success!\n" if $retVal=~s/showpos=1/showpos=${main::pageVar}1/;
Re: Regex Interpolation
by httptech (Chaplain) on Jun 24, 2000 at 05:16 UTC
    Curly braces should do the trick here, to separate your variable name from the '1': print "Success!\n" if $retVal =~ s/showpos=1/showpos=${main::pageVar}1/;

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://19659]
Approved by root
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (2)
As of 2014-08-31 04:23 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (294 votes), past polls