拆分字符串并在for循环中执行sub

时间:2013-03-15 08:48:49

标签: perl

我是Perl的新手。我有像

这样的字符串
my $http_origin_servers_list = "abc:2220,cde:40111,efg:45643";

我有一个叫做

的子
executeCommand($host);

我想将$http_origin_servers_list转换为数组

my @values = ("abc:2220", "cde:40111", "efg:45643");

并依次为每个值调用executeCommand

executeCommand("abc:2220");

3 个答案:

答案 0 :(得分:5)

从技术上讲,你要求

my @hosts = split /,/, $http_origin_servers_list;
for my $host (@hosts) {
    executeCommand($host);
}

但您可以跳过创建数组。

for my $host (split /,/, $http_origin_servers_list) {
    executeCommand($host);
}

如果您愿意,可以更简洁地写出来。

executeCommand($_) for split /,/, $http_origin_servers_list;

答案 1 :(得分:1)

my $http_origin_servers_list = "abc:2220,cde:40111,efg:45643";
my @v = split (/,/, $http_origin_servers_list);
print ("$_\n") for @v; # or executeCommand($_) for @v

答案 2 :(得分:1)

如果您可以控制服务器列表,则可以直接创建列表:

my @servers = qw/abc:1 def:2 ghi:3/;
for my $server (@servers) {
    say $server;
}