in reply to Creating comma-delimited lists

join ', ', @a
Update: I just noticed the extra 'and' for the last thing, so:
my $string = join ', ', @a[$[..$#a-1]; $string .= ", and $a[-1]"; # or in one line my $str = join ', ', @a[$[..$#a-1], "and $a[-1]";
BlaisePascal makes the good point that this assumes a list of size greater then 1. This too can be solved easily:
my $str = @a > 1 ? join ', ', @a[$[..$#a-1], "and $a[-1]" : $a[0];