in this case, I would prefer:<br><br>$name = &quot;Alan Rocker&quot;;<br>($first_name, @other_names) = split/\s+/, $name;<br><br><br><div class="gmail_quote">2008/7/9 Indy Singh &lt;<a href="mailto:indy@indigostar.com">indy@indigostar.com</a>&gt;:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Alan,<br>
If you are suggesting that it is better to have left it as the original multi line code instead of the compressed version, &nbsp;I am not sure that I agree with that.<br>
<br>
Here is an example using different variable names to clarify the intent:<br>
First written your way:<br>
1: $name = &quot;Alan Rocker&quot;;<br>
2: $first_name = $name;<br>
3: $first_name =~ s/\s.*$//; &nbsp; &nbsp; &nbsp; &nbsp;# remove the last name<br>
<br>
The problem I have with this code is that if you look at line 2, it is temporarily wrong. &nbsp;At this point $first_name contains the full name so it is wrong. &nbsp;Then we correct the error on line 3. &nbsp;Since I read code one line at a time, my brain throws an exception when I see line 2. &nbsp;It is possible to somewhat clarify the intent my merging line 2 and 3:<br>

<br>
$first_name = $name; $first_name =~ s/\s.*$//;<br>
<br>
But I really prefer the following method:<br>
1: $full_name = &quot;Alan Rocker&quot;;<br>
2: ($first_name) = $full_name =~ /(*?)\s/;<br>
<br>
In this example at any point the varaibles only ever contain what they are supposed to contain, i.e. &nbsp;$first_name actually contains the first name.<br>
<br>
To further expand the example to include a common need to split fields from a line:<br>
1: $full_name = &quot;Alan Rocker&quot;;<br>
2: ($first_name, $last_name) = $full_name =~ /(*?)\s(.*)/;<br>
<br>
(Note untested code, may contain bugs)<br>
<br>
Now, where did I put my accordian? ...<div class="Ih2E3d"><br>
<br>
Indy Singh<br>
IndigoSTAR Software -- <a href="http://www.indigostar.com" target="_blank">www.indigostar.com</a><br>
<br>
<br></div>
----- Original Message ----- From: &lt;<a href="mailto:arocker@vex.net" target="_blank">arocker@vex.net</a>&gt;<div class="Ih2E3d"><br>
To: &quot;Toronto Perl Mongers&quot; &lt;<a href="mailto:tpm@to.pm.org" target="_blank">tpm@to.pm.org</a>&gt;<br></div>
Sent: Wednesday, July 09, 2008 11:51 AM<br>
Subject: Re: [tpm] Regex question<div><div></div><div class="Wj3C7c"><br>
<br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Madi&#39;s original question, and one typical response:<br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

my $foo=&quot;ABC-987-01&quot;;<br>
my $bar=$foo;<br>
$bar=~s/(\w+-\d+)-\d+/$1/;<br>
# $bar now &#39;ABC-987&#39;.<br>
<br>
That&#39;s three lines. Is there a way to do this in one line?<br>
</blockquote>
<br>
Maybe I misunderstood the question... &nbsp;You can say<br>
<br>
 &nbsp; my ($bar) = $foo =~ /(\w+-\d+)-\d+/;<br>
<br>
which will assing $1 to $bar if the match succeeds.<br>
<br>
</blockquote>
Compressing the assignment (which really doesn&#39;t include the original<br>
setting of $foo) saves one line ad one naming of $bar at the expense of<br>
complexity and inflexibility.<br>
<br>
To comprehend the expression, you have to keep an extra level on the<br>
mental stack, and if you want to change the destination you risk changing<br>
the regex. (The two expressions aren&#39;t completely equivalent; the original<br>
doesn&#39;t change $foo, the other, like most of the suggestions, does.)<br>
<br>
Sometimes, it pays to remember the KISS principle, and the joke (?) about<br>
a gentleman being a man who knows how to play the accordion, but doesn&#39;t.<br>
<br>
_______________________________________________<br>
toronto-pm mailing list<br>
<a href="mailto:toronto-pm@pm.org" target="_blank">toronto-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/toronto-pm" target="_blank">http://mail.pm.org/mailman/listinfo/toronto-pm</a> <br>
</blockquote>
<br>
_______________________________________________<br>
toronto-pm mailing list<br>
<a href="mailto:toronto-pm@pm.org" target="_blank">toronto-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/toronto-pm" target="_blank">http://mail.pm.org/mailman/listinfo/toronto-pm</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Just another Perl Hacker,<br>Fernando (SmokeMachine)<br><a href="http://perl-e.org">http://perl-e.org</a>