2013-03-15 62 views
2

我是Perl的新手。我有串狀分割字符串並執行for循環

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"); 
+0

'executeCommand對於分流/,/,$ http_origin_servers_list' – raina77ow 2013-03-15 08:50:44

+1

@ raina77ow意味着'executeCommand($ _)對於分流/,/,$ http_origin_servers_list;' – ikegami 2013-03-15 08:55:41

+0

爲什麼提交的評論,@ raina77ow? – zoul 2013-03-15 08:57:05

回答

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; 
+0

如果我的$ http_origin_servers_list = abc:2220只有一個元素將溢出函數轉換爲數組my @ values =(abc:2220) – chiru 2013-03-15 09:23:54

+0

當你嘗試它時發生了什麼? :-) – 2013-03-15 09:54:17

+0

是的,它確實謝謝我已經下載perl ide我很享受它 – chiru 2013-03-15 11:18:55

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 
1

如果在服務器列表控件,您可以直接創建列表:

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