Neat, thanks!

- Bryan



> On Jul 20, Bryan R Harris said:
> 
>> I'd like to turn array @tmp from:
>> 
>>   (1,2,3)
>> to
>>   (1,"|",2,"|",3)
> 
>>  @tmp = split(' ', join(" | ", @tmp));
>> 
>> ... but it seems like a waste to create a string and then split it back up
>> again.
> 
> It would also break if elements of @tmp had spaces in them.
> 
> Well, here's one sneaky way.  It assumes that no two elements in the array
> are references to the same data:
> 
>    my @array = ( 1 .. 3 );
>    my @with_pipes = map { \$_ == \$array[-1] ? $_ : ($_, "|") } @array;
> 
> The trick it uses is seeing if a reference to the current element is the
> same as a reference to the LAST element.  If it's not, we insert an
> element after it.
> 
> You could also do it in two steps:
> 
>    my @with_pipes = map { ($_, "|") } @array;
>    pop @with_pipes;
> 
>> As a sidenote, are questions like this appropriate for the list?  I really
>> don't *need* help with this, I was just hoping to expand my personal toolbox
>> with a better way to do something.  Every time John, Wiggins, Luke, Bob,
>> Jeff, etc. respond to my emails I know I'm going to learn something.
> 
> I don't think there's anything wrong with asking such questions.




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


Reply via email to