我要存档。我想拆分一行单行逗号分隔并插入@ 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上是否有任何快捷方式,请发贴样本。感谢
答案 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)
你已经有了很好的答案。在这里,我只是告诉你为什么你的脚本不起作用。我的代码中没有看到任何print
或say
行,因此不确定您是如何尝试打印某些内容的。你的程序中不需要最后一行。您可以为每个值添加@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