3

我是 Perl 的新手。我有类似的字符串

my $http_origin_servers_list = "abc:2220,cde:40111,efg:45643";

我有一个叫做like的子

executeCommand($host);

我想转换$http_origin_servers_list成数组

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

executeCommand并依次调用每个值

executeCommand("abc:2220");
4

3 回答 3

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;
于 2013-03-15T08:53:48.747 回答
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
于 2013-03-15T08:51:23.013 回答
1

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

my @servers = qw/abc:1 def:2 ghi:3/;
for my $server (@servers) {
    say $server;
}
于 2013-03-15T08:51:42.080 回答