Hi All,

How can I make this expression:
$line =~ s/(\S+)\s+(\S+)\s+(\S+)/X$1 Y$2 Z$3/

Add some numerical value to the Z$3 part, so if $3 was 3.14, I want it to be 
Z4.14 for example by adding 1 to it.


Thanks!

-----Original Message-----
From: Mr. Shawn H. Corey [mailto:[EMAIL PROTECTED]
Sent: Wednesday, July 11, 2007 4:52 PM
To: Joseph L. Casale
Cc: beginners@perl.org
Subject: Re: Search and Replace

Joseph L. Casale wrote:
> Paul,
> Reading the perlre doc I am starting to understand this line:
> $line =~ s/(\S+)\s+(\S+)\s+(\S+)/X$1 Y$2 Z$3/;
>
> I have a few questions.
> 1. What is the tilde for?

 From `perldoc perlop`:

        Binding Operators

        Binary "=~" binds a scalar expression to a pattern match.
Certain operations search or modify the string $_ by default.  This
operator makes that kind of operation work on some other string.  The
right argument is a search pattern, substitution, or transliteration.
The left argument is what is supposed to be searched, substituted, or
transliterated instead of the default $_.  When used in scalar context,
the return value generally indicates the success of the operation.
Behavior in list context depends on the particular operator.  See
"Regexp Quote-Like Operators" for details and perlretut for examples
using these operators.

        If the right argument is an expression rather than a search
pattern, substitution, or transliteration, it is interpreted as a search
pattern at run time.

        Binary "!~" is just like "=~" except the return value is negated
in the logical sense.


> 2. I see you built a pattern to search for consisting of a non-whitespace 
> followed by a whitespace followed by a non etc. I see the replacement, but 
> cant figure out how to modify it for the case where I want to go straight to 
> the last file, X# Y# Z[some var].
>
> $line =~ s/(\S+)\s+(\S+)\s+(\S+)/X$1 Y$2 [some var]$3/;
>
> Doesn't work? I assume it's the [] chars?
> How do I escape these in to that expression?

$some_var = 'Z'; # change to whatever you want
$line =~ s/(\S+)\s+(\S+)\s+(\S+)/X$1 Y$2 $some_var$3/;


--
Just my 0.00000002 million dollars worth,
    Shawn

"For the things we have to learn before we can do them, we learn by
doing them."
   Aristotle

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/







--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to