Bowen, Bruce am Sonntag, 12. Februar 2006 22.31:
> I have a text string = "^0176  ^0176"
>
> I have set $a = "^0176  ^0176";
> I have set $b = "^0176  ";
>
> I'm using text =~ s/$a/$b/g;
>
> And the text string doesn't change.  I expected it to come out as "^0176  "
> after the substitution.  What is wrong with my logic?

Not shure if it's clear now after Tom's and Michael's posts.

Compared to the '\^'-solution, Tom's advice is generic (meaning that you have 
not to know which meta characters - there are more than the caret - are in $a 
and dont have to handle them explicitly). It's also more readable.

So it's the preferred way to do it.

perldoc perlre

explains all in full detail.

===
#!/usr/bin/perl
use strict;   # don't forget
use warnings; # those two

my $a='^0176  ^0176'; # note the
my $b='^0176  ';      # single quotes
my $text='some text ^0176  ^0176 here ^0176  ^0176 and there';

(my $temp=$text)=~s/\Q$a\E/$b/gs;
print "a) $temp\n";

my $a1=quotemeta($a);
(my $temp=$text)=~s/$a1/$b/gs;
print "b) $temp\n";
===

Hope $text does not contain votes ;-)

hth,
joe

-- 
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