I would think, and have been trying :

$line =~ /\$myVariable/
 If I do $line like this :

$line = 'HI $myVariable';
If($line =~ /\$myVariable/) { print "HI"; }

It works great, the problem is I can't do $line like that.
It treats line like I did it as
$line = "HI $myVariable"; 
Which is actually "HI whatevermyvariablecontains" 

That's the dilemma. 


-----Original Message-----
From: Rob Dixon [mailto:[EMAIL PROTECTED]] 
Sent: Tuesday, January 14, 2003 9:40 AM
To: [EMAIL PROTECTED]
Subject: Re: finding variable name in string


Hi Ben

You're not soing what you think you're doing. See below.

"Ben Siders" <[EMAIL PROTECTED]> wrote in message 
[EMAIL PROTECTED]">news:[EMAIL PROTECTED]...
> To expand, I wrote a brief sample program to figure this out, since I 
> actually had no idea how to do it.  Here it is:
>
> #!/usr/bin/perl
>
> $myVariable = "blorg";
>
> $line = <STDIN>;
>
> if ( $line =~ /$myVariable/ ) {
>         print "1. Line contains my variable.\n";
> }
>

This is the same as

    if ( $line =~ /blorg/ ) { .. }

which will fail, since your data line doesn't contain that string.

>
> if ( $line =~ /$$myVariable/ ) {
>         print "2. Line contains by variable.\n";
> }
>

This is that same as

    if ( $line =~ /${$myVariable}/ ) { .. }
or
    if ( $line =~ /$blorg/ ) { .. }
which doesn't exist, so evaluates to the empty string
    if ( $line =~ // ) { .. }

Now every string is deemed to contain the empty string, and so your test succeeds. 
It's nothing to do with having the text 'myVariable' in there.

>
> And here's the runlog:
>
> [bsiders@lysol perl]$ ./test.pl asdlkjasdkljmyVariableasdlkjasd
> 2. Line contains by variable.
> [bsiders@lysol perl]$
>

HTH,

Rob




-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to