Let me presume to answer for tybalt89.
my ($cluster, $member) = split;
This depends on default behavior of split, and is equivalent to
my ($cluster, $member) = split ' ', $_;
The ' ' split pattern is a special case explained in split docs.
print $cluster eq $member ? "\n" x ($. > 1) : ', ', $member;
This is a bit more tricksy. From the inside out:
-
($. > 1) $. is input line counter (update: see perlvar). ($. > 1) evaluates to either '' (empty string) or 1 and will be 1 for every input line after the first.
-
"\n" x ($. > 1) Repeats a newline zero times for the first line of input (empty string silently promoted to 0 in this special case), once for every subsequent input line.
-
$cluster eq $member ? Newline_or_Nada : ', ' Ternary expression. If $cluster eq $member true, output newline for every input line after the first (see previous item); if false, output ', ' string.
-
print Ternary_Expression, $member; print result of ternary expresssion (see previous item), then $member string.
And that's all there is to it (I think).
Update: Minor wording changes.
Give a man a fish: <%-{-{-{-<