Another question since I hit another snag on this, hopefully it's the last =)

Sample -->

$s2 = "c:\ise\conf\ise_eif_lvc.config";

$s1 = <STDIN>; # This could be from command line or reading from a file
# But the input will be the following --
#<add key="instrumentationConfig" value="c:\ise\conf\ise_eif_lvc.config" />


if( $s1 =~ m/\Q$s2\E/i ){
          print "matched\n";
}

Somehow this would work, and seems to be the double-quote in the input that's 
causing the issue. I've tried the quotemeta on $s1, but that didn't help. 
Although if I put the actual string into $s1 and use \ to escape the ", then it 
would work. I thought quotemeta does just that.

Again, many thx in advance.

Han

-----Original Message-----
From: Mr. Shawn H. Corey [mailto:shawnhco...@magma.ca]
Sent: Thursday, December 18, 2008 10:51 AM
To: Gu, Han
Cc: 'beginners@perl.org'
Subject: Re: Trying to match window's path

On Thu, 2008-12-18 at 10:42 -0500, Gu, Han wrote:
> Hi,
> Still very noob when it comes to perl. Just have a quick question. I am 
> trying to match a string that is window's path
>
> Sample,
>
> $s1 = "c:\\log\s1.log";
>
> $s2 = $s1;
>
> If ($s1 =~ m/$s2/i) {
>             print "matched\n";
> }
>
> It just wouldn't match. I can put the actual string into m//i, which would 
> work, but I have to make it work with variable, since I'll be reading in the 
> actual string from a file.
>
> Greatly appreciate any answer I get.
>
> Thx
>
> Han

To match non-alphanumeric characters in a string, you need to quotemeta
it.

if( $s1 =~ m/\Q$s2\E/i ){
  # ...

Or

my $s2 = quotemeta( $s1 );
if( $s1 =~ m/$s2/i ){
  # ...


See:
perldoc quotemeta
perldoc perlretut
perldoc prelre


--
Just my 0.00000002 million dollars worth,
  Shawn

The key to success is being too stupid to realize you can fail.


--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to