Deb wrote:
> Rob, you were very helpful in showing me how the split and join
> work, but
> since I wasn't looking to change anything in $line except to
> replace the character separating the email addrs, I used what you
> gave me, and rebuilt
> the $line.  I think it's kinda ugly, though, and I'm wondering if
> there
> is a better way.  Here's what I did:
>
> $line = 'units =               [EMAIL PROTECTED]
> [EMAIL PROTECTED]:[EMAIL PROTECTED]';
>
>    next unless $line =~ /^units/;
>    (my $units, my $rest) = split (/=\s+/,$line);
>    my @addrs   = split /[:;\s]+/, $rest;
>    my $tmpline = join ',', @addrs;
>    $line = $units  . " = " . $tmpline . "\n";
>
> This accomplishes the task, but I'm using a lot of temporary
> variables.  Is there a better way?

I thought you were looking for an explanation of the

  next unless $line =~ s///

line.

'join' is (almost) the exact opposite of 'split' and,
given a separator and a list will return a string with
the elements of the list delimited by the separator.
Example

  join '#', 1, 2, 3, 4;

returns

  '1#2#3#4'

Your code above can be simplified, but it looks now like
you're just wanting to rebuild the original data with
commas in place of the colon, semicolon separators
than you started with. Here's a variation on my original
code which reads in your @lines array from the DATA
handle. Lets work from this to try to get where you want
to be. Depending on what you actually need it can be be
reduced further.

Rob



  use strict;
  use warnings;

  my @lines = <DATA>;
  chomp @lines;

  foreach my $line (@lines) {

    next unless $line =~ s/^units\s+=\s+//;

    my @emails = split /[:;\s]+/, $line;
    $line = 'units = ' . join ',', @emails;
    print $line, "\n";
  }

  __DATA__
  units =               [EMAIL PROTECTED] [EMAIL PROTECTED]:[EMAIL PROTECTED]
  units =               [EMAIL PROTECTED]
  units =               [EMAIL PROTECTED] [EMAIL PROTECTED]


OUTPUT

  units = [EMAIL PROTECTED],[EMAIL PROTECTED],[EMAIL PROTECTED]
  units = [EMAIL PROTECTED]
  units = [EMAIL PROTECTED],[EMAIL PROTECTED]






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

Reply via email to