拆分,插入和加入

时间:2015-09-09 02:06:11

标签: perl

我要存档。我想拆分一行单行逗号分隔并插入@ domain.com然后以逗号分隔的方式将其加入。

单行包含的内容如下:

  

USERNAME1,USERNAME2,USERNAME3

我想成为:

  

USERNAME1 @ domain.com,USERNAME2 @ domain.com,USERNAME3 @ domain.com

所以我尝试过的Perl脚本无法正常工作:

my $var ='username1,username2,username3';
my @tkens = split /,/, $var;
my @user;
       foreach my $tken (@tkens) {
           push (@user, "$tken\@domain.com");
       }
my $to = join(',',@user);

Perl上是否有任何快捷方式,请发贴样本。感谢

3 个答案:

答案 0 :(得分:2)

分裂,变换,缝合:

my $var ='username1,username2,username3';
print join ",", map { "$_\@domain.com" } split(",", $var);
# ==> username1@domain.com,username2@domain.com,username3@domain.com

答案 1 :(得分:1)

您还可以使用正则表达式替换:

#!/usr/bin/perl
use strict;
use warnings;

my $var = "username1,username2,username3";
# Replace every comma (and the end of the string) with a comma and @domain.com
$var =~ s/$|,/\@domain.com,/g;
# Remove extra comma after last item
chop $var;
print "$var\n";

答案 2 :(得分:1)

你已经有了很好的答案。在这里,我只是告诉你为什么你的脚本不起作用。我的代码中没有看到任何printsay行,因此不确定您是如何尝试打印某些内容的。你的程序中不需要最后一行。您可以为每个值添加@domain.com后缀,推送到数组并使用join进行打印。

#!/usr/bin/perl
use strict;
use warnings;

my $var = 'username1,username2,username3';
my @tkens = split ',', $var;
my @user;
foreach my $tken (@tkens)
{
    push @user, $tken."\@domain.com"; # `.` after `$tken` for concatenation  
}
print join(',', @user), "\n"

输出:

username1@domain.com,username2@domain.com,username3@domain.com