Tim Yohn wrote:
> 
> Michael,
> 
> On Fri, 2003-07-11 at 11:56, Michael Weber wrote:
> >         $line =~ s/reject/$red.reject.$normal/gi ;
> >         $line =~ s/ from /$yellow from $normal/gi ;
> >         $line =~ s/status/$blue status $normal/gi ;
> 
> The following does work however I don't know exactly how valid it is
> (which is why I'm also sending this to the list so they can make their
> comments on it if they have any :-)
> 
>         $line =~ s/reject/${red}reject${normal}/gi ;
>         $line =~ s/from/${yellow}from${normal}/gi ;
>         $line =~ s/status/${blue}status${normal}/gi ;
> 
> Now, the reason I'm saying it might not be 'valid' is that it does work
> however it was just a technique I stole from bash scripting, never used
> it in a perl context before.  Encasing the variable name in {} lets it
> know that the variable name has ended, thus you can place a variable
> name right next to another word and things won't get confused.  I tested
> it out and like I said, it does work, just not sure if it's the best way
> to go about it.

Yes it is valid and is documented in perldata.pod

perldoc perldata
[snip]
       As in some shells, you can enclose the variable name in
       braces to disambiguate it from following alphanumerics.
       You must also do this when interpolating a variable into a
       string to separate the variable name from a following dou­
       ble-colon or an apostrophe, since these would be otherwise
       treated as a package separator:

           $who = "Larry";
           print PASSWD "${who}::0:0:Superuser:/:/bin/perl\n";
           print "We use ${who}speak when ${who}'s here.\n";

       Without the braces, Perl would have looked for a $whos­
       peak, a `$who::0', and a `$who's' variable.  The last two
       would be the $0 and the $s variables in the (presumably)
       non-existent package `who'.

       In fact, an identifier within such curlies is forced to be
       a string, as is any simple identifier within a hash sub­
       script.  Neither need quoting.  Our earlier example,
       `$days{'Feb'}' can be written as `$days{Feb}' and the
       quotes will be assumed automatically.  But anything more
       complicated in the subscript will be interpreted as an
       expression.



John
-- 
use Perl;
program
fulfillment

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

Reply via email to